SetTimeout 从不调用函数

SetTimeout never calls function

本文关键字:函数 调用 SetTimeout      更新时间:2023-09-26

我创建了一个循环来模拟长时间运行的操作。在这里:

var b1, b2;
b1 = true;
b2 = false;
while (b1) {
    if (!b2) {
        setTimeout(function() => {
            b1 = false;
        }, 1000);
       b2 = true;
     }
}

关于为什么b1 = true;永远不会发生的任何想法?

setTimeout只安排一个函数在n秒后执行。该函数在该时间段过后以与任何其他函数相同的方式放在线程执行堆栈上。

在这种情况下,超时函数不会中断while循环的执行。它将在主线程执行完成后执行。所以从来没有。

您可以在此处查看计时器的HTML5草案规范。

setTimeout 的语法不正确

var b1, b2;
b1 = true;
b2 = false;
while (b1) {
    if (!b2) {
        setTimeout(function() {
            b1 = false;
        }, 1000);
       b2 = true;
     }
}