這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)javascript中sleep的使用方法,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)公司、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了羅甸免費(fèi)建站歡迎大家使用!
很多編程語言里都有sleep()
,delay()
等方法,它能讓我們的程序不那么著急的去執(zhí)行下一步操作,而是延遲、等待一段時間。軟件開發(fā)中經(jīng)常會遇到需要這樣的函數(shù),比如等待幾分鐘去檢查某一事件是否發(fā)生。JavaScript里有setTimeout()
方法來實(shí)現(xiàn)設(shè)定一段時間后執(zhí)行某個任務(wù),但寫法很丑陋,需要提供回調(diào)函數(shù):
setTimeout(function(){ alert("Hello"); }, 3000);
JavaScript Promise API是新出現(xiàn)了一個API,借助 Promise,我們可以對setTimeout
函數(shù)進(jìn)行改良,下面就是把setTimeout()
封裝成一個返回Promise的sleep()
函數(shù)。
// https://zeit.co/blog/async-and-await function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); } // 用法 sleep(500).then(() => { // 這里寫sleep之后需要去做的事情 })
你會發(fā)現(xiàn),這種寫法很優(yōu)雅,很像其它編程語言里的延遲、等待函數(shù)。Promise API使我們避免傳入回調(diào)函數(shù),我們在實(shí)現(xiàn)中還使用了ES6中的箭頭(arrow)函數(shù)。
這里需要提到的一個問題是,這個sleep()
在執(zhí)行的時候是“block”程序的繼續(xù)執(zhí)行的。它不是同步的。如果想讓它同步執(zhí)行,不妨礙執(zhí)行之后的代碼,我們可以使用 async/await
關(guān)鍵字。
(async function() { console.log('Do some thing, ' + new Date()); await sleep(3000); console.log('Do other things, ' + new Date()); })();
執(zhí)行結(jié)果:
Do some thing, Mon Feb 23 2015 21:52:11 GMT+0800 (CST) Do other things, Mon Feb 23 2015 21:52:14 GMT+0800 (CST)
你會發(fā)現(xiàn),這一次,sleep()
并沒有阻礙第二個console
的執(zhí)行。
但 async/await
是ES7中的語法,目前還是處于試驗(yàn)階段。那現(xiàn)在想用這個 async/await
特性怎么辦?可以嘗試 google 的一個 JavaScript 預(yù)編譯器 traceur,可以將高版本的 JavaScript 編譯為 ES5 代碼,已經(jīng)實(shí)驗(yàn)性的支持了 async/await (需要使用 –experimental 來指定開啟)。
上文描述的就是javascript中sleep的使用方法,具體使用情況還需要大家自己動手實(shí)驗(yàn)使用過才能領(lǐng)會。如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前名稱:javascript中sleep的使用方法
轉(zhuǎn)載注明:http://jinyejixie.com/article8/ggggop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站設(shè)計、電子商務(wù)、網(wǎng)站策劃、網(wǎng)站制作、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)