您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“js中如何實現sleep”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“js中如何實現sleep”這篇文章吧。
1、利用循環實現類似sleep
functionsleep(d){
for(vart=Date.now();Date.now()-t<=d;);
}
sleep(5000);//當前方法暫停5秒
優點:簡單粗暴,通俗易懂。
缺點:這是最簡單粗暴的實現,確實sleep了,也確實卡死了,CPU會飆升,無論你的服務器CPU有多么Niubility。
2、Promise版本實現類似sleep
functionsleep(ms){
returnnewPromise(resolve=>
setTimeout(resolve,ms)
)
}
sleep(3000).then(()=>{
//code
})
優點:這種方式實際上是用了setTimeout,沒有形成進程阻塞,不會造成性能和負載問題。
缺點:雖然不像callback套那么多層,但仍不怎么美觀,而且當我們需要在某過程中需要停止執行(或者在中途返回了錯誤的值),還必須得層層判斷后跳出,非常麻煩,而且這種異步并不是那么徹底,還是看起來別扭。
3、通過generate來實現類似sleep
function*sleep(ms){
yieldnewPromise(function(resolve,reject){
console.log(111);
setTimeout(resolve,ms);
})
}
sleep(500).next().value.then(()=>{
console.log(11111)
})
優點:同Promise優點,另外代碼就變得非常簡單干凈,沒有then那么生硬和惡心。
缺點:但不足也很明顯,就是每次都要執行next()顯得很麻煩,雖然有co(第三方包)可以解決,但就多包了一層不好看,錯誤也必須按co的邏輯來處理不爽。
以上是“js中如何實現sleep”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。