超过了最大堆栈大小
Maximum stack size exceeded
我有这个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)
}
}
相关文章:
- Rails File_field最大堆栈大小
- Javascript在实现时似乎跳过了一行(如果count==1)
- 我需要迭代一个JSON数组——不知道如何做到——已经搜索过了,但仍然可以'我一点也不知道
- Hammer.js过了一段时间就停止工作了
- 通过套接字发送画布元素,JS中的最大堆栈大小
- grunt contrib jshint-error在定义之前就已经使用过了
- 递归 - 测试最大堆栈大小时,调用堆栈无法弹出
- 已达到最大堆栈大小
- 进行自动实时聊天/虚假聊天,我的javascript跳过了第一个响应
- 再次调用时跳过了 Ajax
- 我试过了,但调用成员单击不适用于输入按钮,它与其他按钮非常不同
- 窗口位置不起作用,我已经尝试过了
- 引导程序下拉不起作用.什么都试过了..(引导2.3.2)
- 为什么将一个值推入我的数组被跳过了
- 超过了最大堆栈大小
- 七吃九:为什么我的索引8在这个d3选择中被跳过了
- 为什么这个复选框不触发jquery代码onchange?我什么都试过了,但都不起作用
- jQuery不工作-'jQuery在定义之前就已经使用过了;
- getElementById有时为null.已经试过了.加载完毕.准备好了
- 观察已定义属性的值时超出了最大堆栈