Консоль 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 так что это может быть использовано для следующего таймера.


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

Другие вопросы по тегам