我有这个javascript方法:
function waitcheck(){
if(wait == 0){
offlineUpload()
}
else{
setTimeout(waitcheck(), 2000)
}
}
我输了,现在我收到错误,说“超出最大堆栈大小”
此方法的目标是等待var通过异步函数变为“0”。
有更好的方法吗?
我怎样才能解决这个错误?
答案 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)
}
}