SetTimeout从不调用函数

时间:2015-02-10 18:49:52

标签: javascript

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

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

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

2 个答案:

答案 0 :(得分:5)

setTimeout仅计划在n秒后执行的函数。在该时间段过去之后,该函数以与任何其他函数相同的方式放在线程执行堆栈上。

在这种情况下,超时功能将不中断执行while循环。它将在主线程执行完成后执行....所以永远不会。

您可以查看定时器here的HTML5草案规范。

答案 1 :(得分:0)

你的setTimeout语法不正确

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