Консоль Javascript Chrome пока
Я пытался создать цикл в консоли Chrome с Javascript, который выполняет одну и ту же функцию все время. Вместо этого он ничего не выводит, а просто увеличивает объем памяти Chromes до тех пор, пока не выйдет из строя. Любой совет, что здесь происходит не так?
while(true){
window.setTimeout(function (){
console.log("Hello");
}, 4000)}
1 ответ
Вы создаете огромное количество setTimeout
события, которые создаются сразу в быстрой последовательности и должны вызываться через 4000 мс после их создания.
Похоже, вы ищете .setInterval()
выполнить непрерывный вызов.
window.setInterval(function() {
console.log("Hello");
}, 4000);
Сделать это с setTimeout
Вы бы все равно не использовали какой-либо императивный цикл. Вы бы настроить обратный вызов другой setTimeout
когда он работает.
window.setTimeout(function f() {
console.log("Hello");
setTimeout(f, 4000);
}, 4000);
Я дал функции обратного вызова имя f
так что это может быть использовано для следующего таймера.
В общем, вы не "приостанавливаете" свой сценарий. Вы планируете что-то сделать на более позднее время и разрешаете коду продолжаться до тех пор. Вот почему у вас была проблема. Запланированный таймер ничего не останавливал, поэтому цикл просто продолжал работать на полной скорости.