3 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
sleep()
function pauseBrowser(millis) { var date = Date.now(); var curDate = null; do { curDate = Date.now(); } while (curDate-date < millis);}
new Date()

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
ECMAScript 6版本,使用用于“代碼阻塞”的生成器:
因?yàn)樽畛醯膯?wèn)題是七年前發(fā)布的,所以我沒(méi)有費(fèi)心回答確切的代碼,因?yàn)樗?jiǎn)單了,而且已經(jīng)回答了。這將有助于解決更復(fù)雜的問(wèn)題,例如,如果您至少需要兩次睡眠,或者您計(jì)劃對(duì)異步執(zhí)行進(jìn)行排序。請(qǐng)隨意修改它以滿(mǎn)足您的需要。
let sleeptime = 100
function* clock()
{
let i = 0
while( i <= 10000 )
{
i++
console.log(i); // actually, just do stuff you wanna do.
setTimeout(
()=>
{
clk.next()
}
, sleeptime
)
yield
}
}
let clk = clock()
clk.next()
function sleep(ms)
{
return(
new Promise(function(resolve, reject)
{
setTimeout(function() { resolve(); }, ms);
})
);
}
sleep(1000).then(function()
{
console.log('1')
sleep(1000).then(function()
{
console.log('2')
})
})
或者簡(jiǎn)單得多,也不那么花哨。
function sleep(ms, f)
{
return(
setTimeout(f, ms)
)
}
sleep(500, function()
{
console.log('1')
sleep(500, function()
{
console.log('2')
})
})
console.log('Event chain launched')
如果你只是在等待某種情況的發(fā)生,你可以這樣等待
function waitTill(condition, thenDo)
{
if (eval(condition))
{
thenDo()
return
}
setTimeout(
() =>
{
waitTill(condition, thenDo)
}
,
1
)
}
x=0
waitTill(
'x>2 || x==1'
,
() =>
{
console.log("Conditions met!")
}
)
// Simulating the change
setTimeout(
() =>
{
x = 1
}
,
1000
)
添加回答
舉報(bào)