@blackhacker
- Каждый раз вызывая асинхронную функцию вы должны делать это через _call. Например
_call(test,null)!
- Если нужно передать в нее аргументы - передавайте их вторым параметром.
_call(test, 1)!
или
_call(test, function(){log("test")})!
Чтобы получить аргументы используйте функцию _arguments()
Используя эти 2 правила я переписал код таким образом
test1 = function () {
sleep(200)!
log('1');
};
test2 = function () {
sleep(200)!
log('2');
};
test3 = function () {
sleep(200)!
log('3');
};
test4 = function () {
sleep(2000)!
log('4');
};
test = function () {
_CALLBACK_TEST = _arguments();
_call(test1, null)!
_call(test2, null)!
_call(test3, null)!
_call(test4, null)!
_call(_CALLBACK_TEST,null)!
};
t = function () {
_call(test, function(){log('callback')} )!
}
main = function () {
t()!
};
_call(main,null)!
log("end")
Теперь вызов функции main разботает в цикле, с условиями и где угодно.