Node.js實(shí)現(xiàn)鏈?zhǔn)交卣{(diào)
由于異步的關(guān)系,代碼的書寫順序可能和執(zhí)行順序并不一樣,可能想先執(zhí)行A再執(zhí)行B,但由于異步可能B要先于A執(zhí)行.例如在OC中使用AFnetworking請(qǐng)求數(shù)據(jù)然后刷新頁(yè)面,由于網(wǎng)絡(luò)請(qǐng)求是用block實(shí)現(xiàn)的異步方法,所以刷新的時(shí)候并沒(méi)有數(shù)據(jù),為了解決這個(gè)問(wèn)題,一般會(huì)在請(qǐng)求響應(yīng)結(jié)束在block中刷新頁(yè)面(這就回出現(xiàn)循環(huán)引用的問(wèn)題,不過(guò)node中不會(huì)出現(xiàn)).
上面是OC中異步執(zhí)行中的鏈?zhǔn)交卣{(diào),在node.js中也是使用這樣的方法在回調(diào)中調(diào)用方法來(lái)實(shí)現(xiàn)鏈?zhǔn)交卣{(diào)。
function logCar(car,callback) { console.log("Saw a %s",car); process.nextTick(callback); } function logCars(cars) { var car=cars.pop(); if (cars.length) { logCar(car,function(){ logCars(cars);; }); } } var cars = ["Ferrari", "Porsche", "Bugatti", "Lamborghini", "Aston Martin"]; logCars(cars);
輸出結(jié)果:
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe callback_chain.js
Saw a Aston Martin
Saw a Lamborghini
Saw a Bugatti
Saw a PorscheProcess finished with exit code 0
到此這篇關(guān)于Node.js實(shí)現(xiàn)鏈?zhǔn)交卣{(diào)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Node.js Continuation Passing Style( CPS與回調(diào))
- Node.js基礎(chǔ)入門之回調(diào)函數(shù)及異步與同步詳解
- 如何將Node.js中的回調(diào)轉(zhuǎn)換為Promise
- Node.js 回調(diào)函數(shù)實(shí)例詳解
- node.js實(shí)現(xiàn)回調(diào)的方法示例
- 深入理解Node.js 事件循環(huán)和回調(diào)函數(shù)
- 剖析Node.js異步編程中的回調(diào)與代碼設(shè)計(jì)模式
- node.js回調(diào)函數(shù)之阻塞調(diào)用與非阻塞調(diào)用
- 我的Node.js學(xué)習(xí)之路(三)--node.js作用、回調(diào)、同步和異步代碼 以及事件循環(huán)
相關(guān)文章
基于Node的Axure文件在線預(yù)覽的實(shí)現(xiàn)代碼
這篇文章主要介紹了基于Node的Axure文件在線預(yù)覽的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Node.js實(shí)現(xiàn)讀取Excel數(shù)據(jù)并插入MySQL
這篇文章主要為大家詳細(xì)介紹了Node.js如何實(shí)現(xiàn)讀取Excel數(shù)據(jù)并插入到MySQL數(shù)據(jù)庫(kù)中,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11node.js中的buffer.write方法使用說(shuō)明
這篇文章主要介紹了node.js中的buffer.write方法使用說(shuō)明,本文介紹了buffer.write的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12Node.js利用Net模塊實(shí)現(xiàn)多人命令行聊天室的方法
Node.js Net 模塊提供了一些用于底層的網(wǎng)絡(luò)通信的小工具,包含了創(chuàng)建服務(wù)器/客戶端的方法,下面這篇文章主要給大家介紹了Node.js利用Net模塊實(shí)現(xiàn)命令行多人聊天室的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12node使用Mongoose類庫(kù)實(shí)現(xiàn)簡(jiǎn)單的增刪改查
Mongoose是在nodejs環(huán)境中對(duì)MongoDB數(shù)據(jù)庫(kù)操作的封裝,這篇文章主要介紹了node使用Mongoose類庫(kù)實(shí)現(xiàn)簡(jiǎn)單的增刪改查,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Bun入門學(xué)習(xí)教程吊打Node或Deno的現(xiàn)代JS運(yùn)行時(shí)
這篇文章主要為大家介紹了一款吊打Node或Deno的現(xiàn)代JS運(yùn)行時(shí),Bun入門學(xué)習(xí)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07