цикл for и setTimeout
function b(a) { return a * a; } for (a = 0; a < 5; a++) { c = a; if (a == 3) { setTimeout(function() { c = b(a); alert(c); //как сделать чтоб тут алерт выполнился когда а = 3;? // а то выполняется когда уже а = 5 }, 5000); } alert(c); } |
обернуть в замыкание
function b(a) { return a * a; } for (a = 0; a < 5; a++) { c = a; if (a == 3) { (function(a){ setTimeout(function() { c = b(a); alert(c); //как сделать чтоб тут алерт выполнился когда а = 3;? // а то выполняется когда уже а = 5 }, 5000); })(a); } alert(c); } |
Можно использовать замыкание
function b(a) { return a * a; } for (var a = 0; a < 5; a++) { c = a; if (a == 3) { setTimeout((function(aParam) { return function() { c = b(aParam); alert(c); }; })(a), 5000); } alert(c); } Ага, опередили. =) |
Спасибо =)
|
а как сделать чтоб цикл for не продолжался выполняться пока не выполниться функция в setTimeout?
|
это уже асинхронное программирование. код там будет совсем другой
но .. исполнение кода блокируется, пока не выполнится функция в таймауте. |
Часовой пояс GMT +3, время: 00:45. |