NodeJS如何優(yōu)雅的實現Sleep休眠
NodeJS實現Sleep休眠
先打印1,然后1.5秒后打印2
/*
休眠函數sleep
調用 await sleep(1500)
*/
function sleep(ms) {
return new Promise(resolve=>setTimeout(resolve, ms))
}
async function main() {
console.log(1)
await sleep(1500)
console.log(2)
}
main()
NodeJS實現一個真正的Sleep,Sleep期間不影響其它線程執(zhí)行
Node.js 是基于 Chrome V8 引擎的 JavaScript 運行環(huán)境,它采用了單線程、事件驅動和非阻塞I/O模型。
由于JavaScript是單線程的,傳統意義上的線程睡眠(如Java中的Thread.sleep)在Node.js中并不適用,因為那會阻塞整個事件循環(huán),從而影響其他所有任務的執(zhí)行。
然而,如果你希望實現一個“sleep”效果,同時不阻礙其他異步操作的進行,你可以使用Promise結合setTimeout來模擬異步等待的效果。
這樣,你可以在等待期間讓出事件循環(huán)給其他任務處理,模擬并發(fā)執(zhí)行的效果。
以下是一個簡單的示例:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function yourAsyncFunction() {
console.log('開始執(zhí)行');
await sleep(2000); // 模擬“sleep”2秒
console.log('2秒后繼續(xù)執(zhí)行');
}
yourAsyncFunction();
console.log('這句代碼會立即打印,不會被sleep阻塞');在這個例子中,sleep函數返回一個Promise,這個Promise在指定的毫秒數后解析,從而允許使用await關鍵字在異步函數中“等待”,而不會阻塞其他代碼的執(zhí)行。
console.log('這句代碼會立即打印,不會被sleep阻塞')會立即執(zhí)行,不受sleep影響,體現了非阻塞特性。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
如何使用?Node.js?將?MongoDB?連接到您的應用程序
NoSQL?數據庫對于處理大量分布式數據非常有用,我們可以在這個數據庫中存儲信息,對其進行管理,這篇文章主要介紹了使用?Node.js?將?MongoDB?連接到您的應用程序,需要的朋友可以參考下2022-09-09
nodejs更新package.json中的dependencies依賴到最新版本的方法
今天小編就為大家分享一篇nodejs更新package.json中的dependencies依賴到最新版本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

