繁体   English   中英

关于递归函数的Javascript settimeout?

[英]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);
     }
}

这是我通过数组递归的基本函数。 无论如何,有时它经历(在//什么都不做的时候)。 它会卡住,我希望它在说2秒后超时并转到下一个。 这可能吗,还是我必须完全停止这个功能?

编辑:设置超时可能不是我要找的,但有些方法只是停止功能并转到下一个。

编辑2:在代码中添加了更多内容

嗯。 你知道它被“卡住”时究竟发生了什么吗? 因为如果“卡住”意味着遇到循环或其他一些错误,那么setTimeout将无法帮助你。 根据我的经验,设置为使用setTimeout执行的代码将在给定的延迟已经过去或其他代码已停止执行时发生,以最后一次发生。 换句话说,我认为您不能使用setTimeout中断当前正在运行的代码,这似乎就是您所要求的。

我知道这不是一个答案; 我建议改为坚持卡住的本质。

你可以“尝试”使用iframe.contentDocument.readyState,但我说“尝试”没有信心,因为我的测试它总是出现在“完整”状态,但可能当你遇到一些需要一段时间的页面时加载他们可能会留在以前的一些状态。

有关此信息和不同状态的更多信息,请查看此信息

http://msdn.microsoft.com/en-us/library/ms534358%28v=vs.85%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM