Рассмотрим такой цикл:
for(var it = 0; it < 2; it++)
{
setTimeout(function() {
alert(it);
}, 1);
}
Вывод:
=> 2
=> 2
Мне бы хотелось: 0, 1. Я вижу два способа исправить это:
Решение № 1.
Это основано на том, что мы можем передавать данные в setTimeout.
for(var it = 0; it < 2; it++)
{
setTimeout(function(data) {
alert(data);
}, 1, it);
}
Решение № 2.
function foo(data)
{
setTimeout(function() {
alert(data);
}, 1);
}
for(var it = 0; it < 2; it++)
{
foo(it);
}
Есть ли другие альтернативы?