javascript超时/睡眠使用setTimeout()

时间:2013-08-15 13:52:10

标签: javascript jquery timeout sleep timing

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

setTimeout(function(){},2000);

setTimeout(2000);

任何人都能提供指针吗?

3 个答案:

答案 0 :(得分:9)

setTimeout(function(){
  //put your code in here to be delayed by 2 seconds
},2000);

您想要延迟的代码需要位于setTimeout函数内。

答案 1 :(得分:0)

试试这个

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

DEMO

答案 2 :(得分:0)

注意:此答案的一部分与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