【发布时间】:2018-03-03 09:09:43
【问题描述】:
我对堆栈和 setTimeout 0 有疑问。 上面的代码产生了所需的输出,但我不明白为什么不将超时设置为 0 “....计算”不会输出。 因为我认为即使没有超时,堆栈上也会“....计算”然后转到函数 countUp 和 for 循环,如果完成了,那么就会写成“准备再次计算” 但是为什么没有 setTimeout 0 就不会发生这种情况呢?
function countUp() {
var result;
for (var i = 0; i < 1000000000; i++) {
result = i;
}
document.getElementById('status').innerText = 'Ready To Calculate Again';
}
function callback() {
document.getElementById('status').innerText = '...calculating';
var wait = window.setTimeout(function() {
countUp();
}, 0);
}
document.getElementById('button').addEventListener('click', callback);
【问题讨论】:
-
不太确定您要做什么。
countUp()中的for()循环只是从 0 循环到 1000000000 并将结果设置为当前增量,而您的setTimeout()设置为 0 毫秒。 -
我正要从您的代码创建一个可运行的 sn-p,但所有代码都显示“准备再次计算”,这与您的描述不符。所以我认为你应该编辑问题并自己创建 sn-p,可能有两个版本(因为你描述有两种不同的行为)。
标签: javascript stack settimeout