Javascript在递归函数上设置超时

Javascript settimeout on recursive function?

本文关键字:设置 超时 递归函数 Javascript      更新时间:2023-09-26
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