Баг ф-ции sleep в if условии



  • Как запускать sleep() функцию в if условии? Еле-еле отловил этот баг.
    Если из примера ниже убрать if, то работает верно.

    0_1560595388185_test_sleep.xml

    0_1560595399078_sleep_0.png

    0_1560595404338_sleep_1.png

    0_1560595410727_sleep_2.png



  • @agility
    sleep()! асинхронная функция, для нее нужно использовать басовский if

    _if(1, function(){
        log("старт")
        sleep(5000)!
        log("финиш")
    })!
    


  • @drprime Спасибо. А если в цикле, как быть? While() например



  • @agility

    _do(function(){
    //Do some
    if(need_stop)
        _break()
    })!
    

    Это цикл while, точнее просто вечный цикл
    Вообще, все функции можно посмотреть в коде скрипта, с помощью поиска по действию



  • @drprime Можешь пожалуйста еще заодно здесь подсказать как вызывать функции BAS из действий в js коде?
    По скрину ниже надо вызвать Test() из "Выполнить свой js код"

    0_1560789295215_test.png



  • @agility Если в функции есть асинхронные действия, вызывается так

    _call(Test, null)!
    


  • @drprime Что-то опять мини-баг или я недопонял. Пишу такой код:

    _if (1, function() {
        _call(Test1, null)!
    })!
    
    _if (1, function() {
        _call(Test2, null)!
    })!
    

    Мне ошибка:

    ReferenceError: Can't find variable: Test2 во время выполнения действия 
    

    Если только с одним _if делать, то все работает



  • @agility Багов нет функция должна быть определена раньше ее вызова.



  • @usertrue Как ее раньше определить? Я создал ее через список

    0_1561047979430_test2.png



  • @agility в выполнить код. Вы зря лезете в это, если не понимаете, что делаете.



  • @usertrue Ничего не понял. Вот весь мой скрипт на скрине. test1 в логе написалось, test2 нет - выводит ошибку. В чем здесь ошибка задания функций?

    0_1561056262109_test3.png



  • @agility В том, что у вас вызов стоит первым. Те функции, что вы создали в БАС идут где-то потом, откройте код скрипта и сами все уведите.



  • @usertrue Все равно не понял. У меня вызов функций выполняется в блоке действия "Выполнить код", который стоит после блока действия "Инициализация", где возможно и загружаются заранее все созданные функции.
    Почему тогда функция Test1 выводит и BAS её видит, а Test2 нет?



  • @agility Случайность. Еще раз говорю смотрите код. Если не понимаете что в нем, то бросайте это занятие.



  • @agility said in Баг ф-ции sleep в if условии:

    @drprime Что-то опять мини-баг или я недопонял. Пишу такой код:

    _if (1, function() {
        _call(Test1, null)!
    })!
    
    _if (1, function() {
        _call(Test2, null)!
    })!
    

    Мне ошибка:

    ReferenceError: Can't find variable: Test2 во время выполнения действия 
    

    Если только с одним _if делать, то все работает

    А вы пробовали запускать скрипт?

    0_1561139202437_c105cda5-6c42-4cc3-ad7e-8f6541649b31-изображение.png

    0_1561139370361_666bc011-a98b-4c5b-8594-4a01d88c555a-изображение.png

    тестовый скрипт



  • @fox Вот, ваш скрипт скачал, запустил и та же ошибка. Версия BAS последняя.

    0_1562488266895_crr.png



  • @agility said in Баг ф-ции sleep в if условии:

    @fox Вот, ваш скрипт скачал, запустил и та же ошибка. Версия BAS последняя.

    0_1562488266895_crr.png

    Вы скриншот приложили из режима "запись" а не "запуск"



  • @agility ...Создавайте функции сами в выполнить код,а не делайте их через кубик и тогда у вас не будет проблем. Вызов функций созданных в бас работает сейчас по не очень понятной логике, раньше работал нормально.



  • @fox said in Баг ф-ции sleep в if условии:

    Вы скриншот приложили из режима "запись" а не "запуск"

    Так смысл тогда в решении выше, что через "запуск" работает, а через "запись" нет. Я пишу шаблон и тестирую через "запись". Получается у меня теперь через "запись" не получится никогда тестировать шаблон.

    @UserTrue А как вы через "выполнить код" пишите функции, если иногда требуется вызывать действия типа "Считать файл в списко", "Двигать мышь над элементов"? Они же там через api BAS'a криво выводятся.



  • @agility said in Баг ф-ции sleep в if условии:

    @UserTrue А как вы через "выполнить код" пишите функции, если иногда требуется вызывать действия типа "Считать файл в списко", "Двигать мышь над элементов"? Они же там через api BAS'a криво выводятся.

    Нормально они работают, если все делать правильно, но мне кажется я уже устал писать об этом. Не понятно зачем вызывать функций через апи бас, если нет понимания как с ним работать.


Log in to reply