Javascript 超出了最大堆栈大小
我有一个javascript方法:Javascript 超出了最大堆栈大小,javascript,asynchronous,Javascript,Asynchronous,我有一个javascript方法: function waitcheck(){ if(wait == 0){ offlineUpload() } else{ setTimeout(waitcheck(), 2000) } } 我迷路了,现在我得到一个错误,说“超过了最大堆栈大小” 此方法的目标是等待var被异步函数转换为“0” 有更好的方法吗? 如何避免此错误?您正在递归调用
function waitcheck(){
if(wait == 0){
offlineUpload()
}
else{
setTimeout(waitcheck(), 2000)
}
}
我迷路了,现在我得到一个错误,说“超过了最大堆栈大小”
此方法的目标是等待var被异步函数转换为“0”
有更好的方法吗?如何避免此错误?您正在递归调用
waitcheck
函数,而不是将函数传递到setTimeout
在您的else
中执行此操作:
setTimeout(waitcheck, 2000)
假设您的
wait
global在该函数之外设置正确,您的代码应该可以工作。您是递归调用waitcheck
函数,而不是将函数传递到setTimeout
在您的else
中执行此操作:
setTimeout(waitcheck, 2000)
假设您的
wait
global在该函数之外设置正确,您的代码应该可以工作。删除函数名称上的括号。(它们导致调用该函数,而不是将其作为引用传递。)
像这样:
function waitcheck(){
if(wait == 0){
offlineUpload()
}
else{
setTimeout(waitcheck, 2000)
}
}
删除函数名上的括号。(它们导致调用该函数,而不是将其作为引用传递。) 像这样:
function waitcheck(){
if(wait == 0){
offlineUpload()
}
else{
setTimeout(waitcheck, 2000)
}
}
这是使用
setInterval
这将每2秒执行一次checker函数,并在wait为0时停止
var interval = setInterval(function() {
if(wait === 0){
clearInterval(interval);
offlineUpload();
}
}, 2000);
这是使用
setInterval
这将每2秒执行一次checker函数,并在wait为0时停止
var interval = setInterval(function() {
if(wait === 0){
clearInterval(interval);
offlineUpload();
}
}, 2000);
这是正确的。完全搞砸了我的代码(在不应该的地方没有分号和()。谢谢这是正确的。完全搞砸了我的代码(在不应该的地方没有分号和()。谢谢这是正确的。完全搞砸了我的代码(在不应该的地方没有分号和()。谢谢这是正确的。完全搞砸了我的代码(在不应该的地方没有分号和()。谢谢