睡眠/等待/暂停javascript

时间:2012-12-01 10:28:50

标签: javascript html parsing sleep wait

我正在编写一个脚本,用于从页面中串行提取信息,一般情况下我必须暂停javascript,但页面继续加载,并且javascript停止了。

setTimeout 不是必需的,因为脚本的其余部分仍在运行

我需要它以便在其他脚本(我没有访问权限)之后继续运行脚本将必要的数据下载到页面(这需要3秒钟)。

P.S。如果有什么东西我从村里提取信息 - http://www.mosgortrans.org/pass3/使用 mozilla并扩展“用户脚本”

2 个答案:

答案 0 :(得分:2)

我不明白为什么setTimeout在这里没有必要 - 它完全按照你的描述进行:

setTimeout(function() {
    // this code runs 3 seconds after the page loads
}, 3000);

答案 1 :(得分:1)

正如之前的回答和评论所暗示的那样,正常的做法是在脚本加载到setTimeout中的函数后放置要运行的代码。例如,如果您担心在等待并导致错误时触发事件处理程序,则需要禁用事件处理程序(例如element.onclick = null),然后在超时功能中重新启用它们。我想你也可以这样做:

var pause = false;
...
callExternalScript();
pause = true;    
setTimeout(function() {
   pause = false;
}, 3000);
...
function oneOfMyOtherFunctions() {
    if (pause) return;
    ...
}
...

但这很麻烦,因为您必须在脚本暂停时要禁用的每个函数的开头都包含if (pause) return。此外,您可能会或可能不想添加额外的代码来运行脚本暂停时调用的所有函数,一旦它被取消暂停。