цикл 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, время: 14:15. |