一个例子 :
var list = readHugeList();
var nextListItem = function() {
var item = list.pop();
if (item) {
setTimeout( nextListItem, 0);
// ^^^^^^^^ this line
}
};
Run Code Online (Sandbox Code Playgroud)
这里如何使用setTimeout防止潜在的堆栈溢出?我了解事件队列和堆栈的概念,但我很难将两者连接起来。
timer = window.setTimeout(function () {
//do something
window.setTimeout(arguments.callee, 1000);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
结果是这些代码运作良好.
但为什么不导致下面的错误?
超出最大调用堆栈大小
在调试它时,找到变量范围不包括先前执行的"setTimeout函数"的范围
谁能解释一下?
最好是文档.