JS Запуск цикла цикла [дубликат]

Также, если вы используете сторонние библиотеки, убедитесь, что у вас есть правильные 32/64 битные файлы

1
задан JVE999 5 September 2013 в 23:37
поделиться

2 ответа

Как указано в комментариях, вы создаете 1000 тайм-аутов за 500 мс одновременно - через 500 мс все они будут выполнены. Вы хотите увеличить время ожидания для каждой запланированной функции:

setTimeout(function() {
    // do something
}, count * 500);

Однако создание 1000 тайм-аутов сразу не является хорошей идеей. Лучше использовать setInterval или вызывать setTimeout «рекурсивно», пока не будет достигнут счет 1000, так что вы будете иметь только один активный тайм-аут за раз.

var count = 0;
function update() {
    // do something
    if (++count < 1000)
        setTimeout(update, 500);
    // else everything is done
}
update();

Кроме того, если вы намерены создавать тайм-ауты в цикле, убедитесь, что знакомы с замыканиями и их поведение при доступе к переменным счетчика после того, как цикл запущен.

2
ответ дан Community 3 September 2018 в 16:14
поделиться

Попробуйте

function recurse ( cnt ) {
    for (var i in MenuData) {
        $("#Menu").append('<div style="position:relative; left:' + MenuData[i].x + 'px; top:' + PositionArray[i] + 'px; ">123</div>');
    }
    if (cnt < 1000){
       setTimeout(function () { recurse(cnt + 1); }, 500);
    }
}

$("#Menu").html('');
if (PositionArray[count] != null) {
    PositionArray[count]++;
} else {
    PositionArray[count] = 0;
}
recurse(0);
0
ответ дан collapsar 3 September 2018 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: