相关疑难解决方法(0)

setTimeout 如何防止潜在的堆栈溢出

一个例子 :

var list = readHugeList();

var nextListItem = function() {
    var item = list.pop();

    if (item) {
        setTimeout( nextListItem, 0);
        // ^^^^^^^^ this line
    }
};
Run Code Online (Sandbox Code Playgroud)

这里如何使用setTimeout防止潜在的堆栈溢出?我了解事件队列和堆栈的概念,但我很难将两者连接起来。

javascript stack-overflow dom-events

5
推荐指数
1
解决办法
931
查看次数

为什么setTimeout调用的函数没有callstack限制?

timer =  window.setTimeout(function () {
    //do something
    window.setTimeout(arguments.callee, 1000);
}, 1000);
Run Code Online (Sandbox Code Playgroud)

结果是这些代码运作良好.

但为什么导致下面的错误?

超出最大调用堆栈大小

在调试它时,找到变量范围不包括先前执行的"setTimeout函数"的范围

谁能解释一下?

最好是文档.

javascript browser settimeout

4
推荐指数
1
解决办法
879
查看次数