-1

我试图在 Chrome 控制台中使用 Javascript 创建一个循环,该循环始终执行相同的功能。相反,它不输出任何内容,实际上只是增加了 Chrome 的内存大小,直到它崩溃。关于这里出了什么问题的任何建议?

while(true){
    window.setTimeout(function (){
        console.log("Hello");
    }, 4000)}
4

1 回答 1

0

您正在创建大量setTimeout事件,所有这些事件都会立即快速连续创建,并计划在它们创建后 4000 毫秒被调用。

似乎您正在寻找.setInterval()执行连续调用。

window.setInterval(function() {
  console.log("Hello");
}, 4000);


要做到这一点setTimeout,您仍然不会使用任何类型的命令式循环。setTimeout当它运行时,你会设置另一个回调。

window.setTimeout(function f() {
  console.log("Hello");
  setTimeout(f, 4000);
}, 4000);

我为回调函数命名f,以便它可以用于下一个计时器。


通常,您不会“暂停”您的脚本。您将事情安排在以后完成,并允许代码继续运行直到那时。这就是你遇到问题的原因。预定的计时器没有暂停任何东西,所以循环只是保持全速运行。

于 2018-01-22T22:23:12.487 回答