@Kaspa добавляете входной параметр в функцию.
Внутри функции, получить параметр функции (сам добавляет если создаёте функцию, если была до этого создана, то вручную добавляете первым внутри функции)
И как обычную переменную вписываете название переменной содержащий список.
Как правильно в "Выполнить код" добавить ожидание?
-
@mix said in Как правильно в "Выполнить код" добавить ожидание?:
Не очень хорошо понимаю асинхронные действия в BAS поэтому вопрос:
Как сделать правильно ожидание в несколько секунд внутри вействия выполнить код?Если без условий или функций, то:
sleep(1000)!если с условием:
_if(true, function(){ sleep(5000)! })!Только смысл?
-
@fox Смысл очень простой. Написал код, само действие "выполнить код" помещено в басовскую функцию "while". Код в зависимости от пришедшего json'a либо запускает while по следующему элементу (блок if), либо запускает while по этому же элементу (блок else), либо продолжает выполнять дальше код (там где многоточия). Потом возникло желание добавить секунд 5-10 ожидание в блок else. И что-то я все равно не пойму как в логике BAS это реализовать?
if (typeof [[RUN_PARAMS]]["data"] != "undefined") { if (typeof [[RUN_PARAMS]]["data"]["redirectModule"] != "undefined" && typeof [[RUN_PARAMS]]["data"]["redirectModule"]["code"] != "undefined") { if ([[RUN_PARAMS]]["data"]["redirectModule"]["code"] == 'NOT_FOUND') { if ([[NOT_FOUND_COUNT]] == 1) { [[LIST]][12][ [[IND_ITEM]] ] = 0; [[IND_ITEM]] = [[IND_ITEM]] + 1; [[CYCLE_INDEX_MAIN]] = [[CYCLE_INDEX_MAIN]] + 1; [[NOT_FOUND_COUNT]] = 0; _next("function"); } else { [[NOT_FOUND_COUNT]] = 1; // Добавить ожидание _next("function"); } } } ... ... ... ... } -
@mix Ожидание - sleep это асинхронная функция и ее нельзя использовать в обычных if, for, while. Смотрите на примере того как БАС генерирует код скрипта или на форуме поищите. В бас вместо циклов for while - _do(function(){...})! А вместо if - _if(условие, function(){...})! или _if_else(условие, function(){...}, function(){...})!
-
@usertrue Т.е. это все if'ы (все 4 штуки из примера выше) нужно заменить на _if(true, function(){. И только потом туда можно будет sleep(5000)! вставить. Я правильно сделал или еще что-то нужно?
_if(typeof [[RUN_PARAMS]]["data"] != "undefined", function(){ _if(typeof [[RUN_PARAMS]]["data"]["redirectModule"] != "undefined" && typeof [[RUN_PARAMS]]["data"]["redirectModule"]["code"] != "undefined", function(){ _if([[RUN_PARAMS]]["data"]["redirectModule"]["code"] == 'NOT_FOUND', function(){ _if_else([[NOT_FOUND_COUNT]] == 1, function(){ [[LIST]][12][ [[IND_ITEM]] ] = 0; [[IND_ITEM]] = [[IND_ITEM]] + 1; [[CYCLE_INDEX_MAIN]] = [[CYCLE_INDEX_MAIN]] + 1; [[NOT_FOUND_COUNT]] = 0; _next("function"); },{ [[NOT_FOUND_COUNT]] = 1; sleep(5000)!; _next("function"); } } } ... ... ... ... } -
@usertrue Смотрите, если вместо многоточий в коде, внутри первого _if у меня дальше идет также много условий, циклов, но уже без асинхронных действий... Мне их тоже нужно на басовские менять или можно оставить обычные if, for, while? Т.е. вот так можно оставить:
_if(typeof [[RUN_PARAMS]]["data"] != "undefined", function(){ _if(typeof [[RUN_PARAMS]]["data"]["redirectModule"] != "undefined" && typeof [[RUN_PARAMS]]["data"]["redirectModule"]["code"] != "undefined", function(){ _if([[RUN_PARAMS]]["data"]["redirectModule"]["code"] == 'NOT_FOUND', function(){ _if_else([[NOT_FOUND_COUNT]] == 1, function(){ [[LIST]][12][ [[IND_ITEM]] ] = 0; [[IND_ITEM]] = [[IND_ITEM]] + 1; [[CYCLE_INDEX_MAIN]] = [[CYCLE_INDEX_MAIN]] + 1; [[NOT_FOUND_COUNT]] = 0; _next("function"); },{ [[NOT_FOUND_COUNT]] = 1; sleep(5000)! _next("function"); } } } if (typeof [[RUN_PARAMS]]["data"]["redirectModule"] != "undefined" && typeof [[RUN_PARAMS]]["data"]["redirectModule"]["code"] != "undefined") { if ([[RUN_PARAMS]]["data"]["redirectModule"]["code"] == 'NOT_FOUND') { for(...) while(...) ... } } }