超出最大堆栈大小

时间:2013-08-02 19:20:56

标签: javascript asynchronous

我有这个javascript方法:

function waitcheck(){
        if(wait == 0){
            offlineUpload()
        }
        else{
            setTimeout(waitcheck(), 2000)
        }
    }

我输了,现在我收到错误,说“超出最大堆栈大小”

此方法的目标是等待var通过异步函数变为“0”。

有更好的方法吗?
我怎样才能解决这个错误?

3 个答案:

答案 0 :(得分:4)

您递归调用waitcheck函数,而不是将函数传递给setTimeout

else

中执行此操作
setTimeout(waitcheck, 2000)

假设您的wait全局在此函数之外设置正确,您的代码应该可以正常工作。

答案 1 :(得分:1)

这是使用setInterval

的教科书示例

这将每2秒执行一次检查功能,并在等待为0时停止。

var interval = setInterval(function() {
  if(wait === 0){
    clearInterval(interval);
    offlineUpload();
  }
}, 2000);

答案 2 :(得分:0)

删除函数名称上的括号。 (它们导致调用该函数,而不是将其作为引用传递。)

像这样:

function waitcheck(){
        if(wait == 0){
            offlineUpload()
        }
        else{
            setTimeout(waitcheck, 2000)
        }
    }