javascript 超时/睡眠使用 setTimeout()

Posted

技术标签:

【中文标题】javascript 超时/睡眠使用 setTimeout()【英文标题】:javascript timeout/sleep using setTimeout() 【发布时间】:2013-08-17 17:31:05 【问题描述】:

如何设置 2 秒超时以等待填充页面控件?我想使用 javascript 我尝试了以下但无济于事:

setTimeout(function(),2000);

setTimeout(2000);

谁能提供一个指针?

【问题讨论】:

超时后你想做的任何事情都必须在传递给setTimeout()的回调函数中,就像你给出的第一个例子一样 【参考方案1】:
setTimeout(function()
  //put your code in here to be delayed by 2 seconds
,2000);

您要延迟的代码需要放在 setTimeout 函数中。

【讨论】:

【参考方案2】:

这样试试

$('input').click(function () 
    var that = $(this);
    setTimeout(function()  alertMsg(that); ,2000);
);

DEMO

【讨论】:

【参考方案3】:

注意:此答案的一部分与another more popular answer 相同,但此答案还包括输出以明确构造的sleep() 允许同一线程中的独立循环交错运行。

ECMAScript 最新草案 (ECMA-262)。截至 2019 年,大多数浏览器都支持,但 IE 不支持。

function sleep(n)  return new Promise(resolve=>setTimeout(resolve,n)); 

async function LoopA() 
    for (let i=0;i<10;i++) 
        console.log("LoopA i=",i,
                    ",sec=",performance.now().toFixed(0)/1000);
        await sleep(1000);
    

async function LoopB() 
    for (let i=0;i<10;i++) 
        console.log("LoopB i=",i,
                    ",sec=",performance.now().toFixed(0)/1000);
        await sleep(1000);
    

LoopA();
LoopB();

有样本输出:

LoopA i= 0 ,sec= 1648.665 
LoopB i= 0 ,sec= 1648.665 
LoopA i= 1 ,sec= 1649.666
LoopB i= 1 ,sec= 1649.667
LoopA i= 2 ,sec= 1650.667
LoopB i= 2 ,sec= 1650.669
LoopA i= 3 ,sec= 1651.669
LoopB i= 3 ,sec= 1651.67
LoopA i= 4 ,sec= 1652.67
LoopB i= 4 ,sec= 1652.671
LoopA i= 5 ,sec= 1653.671 
LoopB i= 5 ,sec= 1653.672 
LoopA i= 6 ,sec= 1654.672 
LoopB i= 6 ,sec= 1654.674 
LoopA i= 7 ,sec= 1655.674 
LoopB i= 7 ,sec= 1655.675 
LoopA i= 8 ,sec= 1656.675 
LoopB i= 8 ,sec= 1656.676 
LoopA i= 9 ,sec= 1657.677 
LoopB i= 9 ,sec= 1657.678

【讨论】:

以上是关于javascript 超时/睡眠使用 setTimeout()的主要内容,如果未能解决你的问题,请参考以下文章

Console无界面程序如何使用SetTimer

Console无界面程序如何使用SetTimer

Console无界面程序如何使用SetTimer

是否有睡眠/等待/超时的竹任务?

睡眠中断异常:java.lang.InterruptedException:睡眠中断 - 如何让浏览器超时 40 分钟

win10 总是很快自动关机 无人参与系统睡眠超时设置