我创建了一个循环来模拟长时间运行的操作。这是:
var b1, b2;
b1 = true;
b2 = false;
while (b1) {
if (!b2) {
setTimeout(function() => {
b1 = false;
}, 1000);
b2 = true;
}
}
关于为什么b1 = true;
永远不会发生的任何想法?
答案 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;
}
}