【发布时间】:2016-10-02 06:06:42
【问题描述】:
一个例子:
var list = readHugeList();
var nextListItem = function() {
var item = list.pop();
if (item) {
setTimeout( nextListItem, 0);
// ^^^^^^^^ this line
}
};
setTimeout 的使用如何防止潜在的堆栈溢出?我了解事件队列和堆栈的概念,但我很难将两者联系起来。
【问题讨论】:
-
如果您只是从 nextListItem 中调用 nextListItem,则堆栈将随着每次调用而增长,直到您达到退出条件(列表为空)。当你使用 setTimeout 时,外部函数将完成并从堆栈中移除,然后只有内部函数调用会在堆栈上
标签: javascript dom-events stack-overflow