超过了最大堆栈大小

Maximum stack size exceeded

本文关键字:大堆栈 过了      更新时间:2023-09-26

我有这个javascript方法:

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

我迷路了,现在我收到一个错误,说"超过了最大堆栈大小"

此方法的目标是等待var被异步函数转换为"0"。

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

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

else:中执行此操作

setTimeout(waitcheck, 2000)

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

这是使用setInterval 的教科书示例

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

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

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

像这样:

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