睡眠/等待/暂停javascript

睡眠/等待/暂停javascript,javascript,html,parsing,sleep,wait,Javascript,Html,Parsing,Sleep,Wait,我正在编写一个脚本,用于从页面中连续提取信息,通常我必须暂停javascript,但是页面继续加载,javascript停止 setTimeout不是必需的,因为脚本的其余部分仍在运行 我需要它,以便使脚本在其他脚本(我没有访问权限)下载必要的数据到页面后继续运行(这需要3秒钟) 另外,如果有什么东西我从村里获取信息-使用扩展名为“用户脚本”的mozilla我不明白为什么这里不需要setTimeout-它完全符合您的描述: setTimeout(function() { // this

我正在编写一个脚本,用于从页面中连续提取信息,通常我必须暂停javascript,但是页面继续加载,javascript停止

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

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


另外,如果有什么东西我从村里获取信息-使用扩展名为“用户脚本”的mozilla

我不明白为什么这里不需要
setTimeout
-它完全符合您的描述:

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

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

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

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

我将触发一个事件,并在js中的事件处理程序代码中写入我的逻辑,而不是暂停脚本。通过这种方式,它不依赖于秒数,即3秒、5秒或其他任何时间。如果根据Mandar的评论,可以用另一个脚本完成后将触发的内容替换setTimeout,那么这将是更好的选择。