摘要:傳統(tǒng)回調(diào)函數(shù)現(xiàn)在我們要做個(gè)事情,寫個(gè)回調(diào)函數(shù),每秒輸出一個(gè)遞增的數(shù)字,輸出三次普通回調(diào)函數(shù)的寫法現(xiàn)在調(diào)用它現(xiàn)在我們改用來(lái)重寫的函數(shù)我們?cè)谶@里暴露那個(gè)以供調(diào)用現(xiàn)在使用它這里把這個(gè)暴露出去以供使用,記得把本的調(diào)用函數(shù)注釋掉就是行注釋掉
傳統(tǒng)回調(diào)函數(shù)
// demo1-callback.js /** 現(xiàn)在我們要做個(gè)事情,寫個(gè)回調(diào)函數(shù),每秒輸出一個(gè)遞增的數(shù)字,輸出三次 普通回調(diào)函數(shù)的寫法 */ function logNumber(n, callback){ setTimeout(() => { console.log(n); n++; callback(n) }, 1000); } // 現(xiàn)在調(diào)用它 logNumber(1, function(n){ logNumber(n, function(m){ logNumber(m, function(q){ }) }) })Promise
// demo2-promise.js /** 現(xiàn)在我們改用promise來(lái)重寫demo1的函數(shù) */ // 我們?cè)谶@里暴露那個(gè)promise以供demo3調(diào)用 function generatorLogNumber(n){ return new Promise(res => { setTimeout(() => { console.log(n); n++; res(n) }, 1000); }) } // 現(xiàn)在使用它 generatorLogNumber(1) .then(n => { generatorLogNumber(n) .then(m => { generatorLogNumber(m) .then(q => { }) }) }) // 這里把這個(gè)promise暴露出去以供demo3使用,記得把本demo的調(diào)用函數(shù)注釋掉(就是15-24行注釋掉) module.exports = generatorLogNumber;async/await
// demo3-async-await.js /** 現(xiàn)在我們改用更加方便的async/await方式來(lái)調(diào)用demo2的promise */ // 首先把那個(gè)promise引入進(jìn)來(lái) const generatorLogNumber = require("./demo2-promise.js"); (async () => {//雙括號(hào)表示立即執(zhí)行的匿名函數(shù) const n = await generatorLogNumber(1); const m = await generatorLogNumber(n); const q = await generatorLogNumber(m); })() // 可以node demo3-async-await.js 來(lái)運(yùn)行看看
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108954.html
摘要:有兩個(gè)陌生的關(guān)鍵字,同時(shí)函數(shù)執(zhí)行結(jié)果似乎返回了一個(gè)對(duì)象。用來(lái)表示函數(shù)是異步的,定義的函數(shù)會(huì)返回一個(gè)對(duì)象,可以使用方法添加回調(diào)函數(shù)。如果的是對(duì)象會(huì)造成異步函數(shù)停止執(zhí)行并且等待的解決如果等的是正常的表達(dá)式則立即執(zhí)行。 視頻講解 關(guān)于異步處理,ES5的回調(diào)使我們陷入地獄,ES6的Promise使我們脫離魔障,終于、ES7的async-await帶我們走向光明。今天就來(lái)學(xué)習(xí)一下 async-a...
摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書了入門,覺(jué)得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書的目的是以目前還在制定中的ECMASc...
摘要:標(biāo)準(zhǔn)引入了函數(shù),使得異步操作變得更加方便。在異步處理上,函數(shù)就是函數(shù)的語(yǔ)法糖。在實(shí)際項(xiàng)目中,錯(cuò)誤處理邏輯可能會(huì)很復(fù)雜,這會(huì)導(dǎo)致冗余的代碼。的出現(xiàn)使得就可以捕獲同步和異步的錯(cuò)誤。如果有錯(cuò)誤或者不嚴(yán)謹(jǐn)?shù)牡胤?,?qǐng)務(wù)必給予指正,十分感謝。 async ES2017 標(biāo)準(zhǔn)引入了 async 函數(shù),使得異步操作變得更加方便。 在異步處理上,async 函數(shù)就是 Generator 函數(shù)的語(yǔ)法糖。 ...
摘要:以往的異步方法無(wú)外乎回調(diào)函數(shù)和。當(dāng)然,對(duì)這個(gè)新特性也有一定的擔(dān)心,體現(xiàn)在他使得異步代碼變的不再明顯,我們好不容易已經(jīng)學(xué)會(huì)并習(xí)慣了使用回調(diào)函數(shù)或者來(lái)處理異步。 自從Node的7.6版本,已經(jīng)默認(rèn)支持async/await特性了。如果你還沒(méi)有使用過(guò)他,或者對(duì)他的用法不太了解,這篇文章會(huì)告訴你為什么這個(gè)特性不容錯(cuò)過(guò)。本文輔以大量實(shí)例,相信你能很輕松的看懂,并了解Javascript處理異步的...
閱讀 3021·2021-11-24 09:38
閱讀 3553·2021-11-23 09:51
閱讀 1100·2021-09-09 11:52
閱讀 4094·2021-08-11 11:18
閱讀 1168·2019-08-30 14:05
閱讀 3267·2019-08-30 11:23
閱讀 1825·2019-08-29 17:02
閱讀 1172·2019-08-26 13:49