Javascript在递归函数上设置超时
Javascript settimeout on recursive function?
function theFunction(a){
var newNum = a+1;
var iframe = document.createElement("iframe");
var currURL = urlArray[a];
iframe.src = currURL;
iframe.frameBorder = "0";
iframe.height = "0";
iframe.width = "0";
iframe.onload = function(){
document.getElementById('number').innerHTML = a;
};
var arrayLength = someArray.length;
if(a != arrayLength){
theFunction(newNum);
}
}
这是我的基本函数,通过数组递归。无论如何,有时当它经过时(在//do nothing部分)。它会卡住,我希望它在2秒后超时,然后移动到下一个。这是可能的吗,还是我必须完全停止这个函数?
编辑:设置超时可能不是我想要的,但有一些方法可以停止函数并移动到下一个。
编辑2:添加更多代码
嗯。你知道当它"卡住"的时候到底发生了什么吗?因为如果"卡住"意味着遇到循环或其他错误,那么setTimeout将无法帮助您。根据我的经验,设置为使用setTimeout执行的代码将在给定的延迟过去或其他代码停止执行时发生,以最后发生的为准。换句话说,我不认为你可以用setTimeout来中断当前正在运行的代码,这似乎是你想要的。
我知道这是一个没有答案的问题;我建议你应该明确问题的本质。
您可以"尝试"使用iframe.contentDocument。但我说"尝试"没有信心,因为在我的测试中,它总是显示为"完成"状态,但可能当您运行一些需要一段时间才能加载的页面时,它们可能会停留在以前的一些状态。
关于这个和不同状态的更多信息,请查看
http://msdn.microsoft.com/en-us/library/ms534358%28v=vs.85%29.aspx相关文章:
- 为什么页面重新加载会使设置超时无效,以及如何避免
- 立即设置超时
- iOS Safari Javascript设置超时问题
- 如何将嵌套设置超时转换为承诺
- 如何循环设置超时函数
- 关于设置超时/间隔上下文
- 清除设置超时之前的间隔将不起作用
- 在悬停功能中设置超时
- 延迟设置超时()
- 我们是否需要设置超时进行短轮询
- 更合乎逻辑的设置超时例程
- 应设置超时触发多少次
- 如何获得设置超时以从输入中读取值
- 尝试为函数和passvariable设置超时-dos'不起作用
- 清除超时多次设置超时
- Javascript设置超时和重定向-IE冻结
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 重置设置超时-javascript
- 间隔/设置超时起点
- 设置超时难度