最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs中解決異步嵌套循環(huán)和循環(huán)嵌套異步的問題

 更新時間:2017年07月12日 15:57:02   作者:意外金喜  
本篇文章主要介紹了nodejs中解決異步嵌套循環(huán)和循環(huán)嵌套異步的問題,具有一定的參考價值,有興趣的可以了解一下

眾所周知,nodejs異步和循環(huán)對于初學(xué)者來說是一個很大的問題,今天我們就一起來了解和解決它

當(dāng)異步和循環(huán)同時出現(xiàn)的時候這個問題就會被放大很多倍.

慶幸的是,大神們研究出了async這個第三方模塊,解決了node中異步金字塔和循環(huán)問題

async這個模塊應(yīng)該是nodejs中使用最多的第三方模塊,每個月下載量3000W+

async基礎(chǔ)使用 : http://m.fzitv.net/article/118526.htm

異步嵌套循環(huán),循環(huán)嵌套異步的例子:

var async = require('async'); 
//初始化 
var async_lists = [{ aa: 11, bb: 21 }, { aa: 31, bb: 41 }, { aa: 51, bb: 61 }, { aa: 71, bb: 81 }, { aa: 91, bb: 91 }]; 
var task = []; 
task.push(function (callback) { 
 console.log('第一個task任務(wù)'); 
 //循環(huán) 
 async.eachSeries(async_lists, function (async_list, cb) { 
  task_a(async_list, cb) 
 }, function (err) { 
  if (err) return callback(err); 
  //重新賦值 
  async_lists = [{ aa: 12, bb: 22 }, { aa: 32, bb: 42 }, { aa: 52, bb: 62 }, { aa: 72, bb: 82 }, { aa: 92, bb: 92 }]; 
  callback() 
 }); 
}) 
task.push(function (callback) { 
 console.log('第二個task任務(wù)'); 
 async.eachSeries(async_lists, function (async_list, cb) { 
  task_a(async_list, cb) 
 }, function (err) { 
  if (err) return callback(err); 
  async_lists = [{ aa: 13, bb: 23 }, { aa: 33, bb: 43 }, { aa: 53, bb: 63 }, { aa: 73, bb: 83 }, { aa: 93, bb: 93 }]; 
  callback() 
 }); 
}) 
task.push(function (callback) { 
 console.log('第三個task任務(wù)'); 
 async.eachSeries(async_lists, function (async_list, cb) { 
  task_a(async_list, cb) 
 }, function (err) { 
  if (err) return callback(err); 
  callback() 
 }); 
}) 
 
//最外層流程控制 
async.waterfall(task, function (err, result) { 
 if (err) return console.log(err); 
 console.log('成功'); 
}) 
 
function task_a(async_list, cb) { 
 var task2 = []; 
 task2.push(function (cb) { 
  console.log('第一次 : ', async_list); 
  setTimeout(function () { 
 
   cb() 
  }, 1000); 
 }) 
 task2.push(function (cb) { 
  console.log('第二次 : ', async_list); 
  console.log('---------------------------'); 
  setTimeout(function () { 
 
   cb() 
  }, 1000); 
 }) 
 //循環(huán)內(nèi)流程控制 
 async.waterfall(task2, function (err, result) { 
  if (err) return cb(err); 
  cb(); 
 }) 
} 

解釋下這個例子:
首先,最外層使用了async.waterfall這個方法控制task數(shù)組里的異步任務(wù)執(zhí)行順序,一共push了3個任務(wù)async.waterfall(task, function (err, result) {},每執(zhí)行完一次task里的任務(wù),重新對async_lists賦值;

然后,每一個task任務(wù)里都有一個同樣的循環(huán),循環(huán)async_lists這個數(shù)組里的每一個對象,使用async.eachSeries控制必須循環(huán)里所有任務(wù)執(zhí)行完畢才往下執(zhí)行;

最后,在eachSeries循環(huán)里又有一個異步task2任務(wù),這個任務(wù)分2步,分別打印了傳入進來的async_list的值,而且每次打印都使用setTimeout暫停一秒才執(zhí)行下一個任務(wù).

預(yù)期的結(jié)果是 : 首先執(zhí)行task里的第一個任務(wù),分別打印2次async_lists這個數(shù)組里的每個對象,而且每次打印間隔一秒,然后對async_lists重新賦值,執(zhí)行task里的第二個任務(wù),重復(fù)以上操作.3次完成后打印 成功,結(jié)束任務(wù).


輸出的結(jié)果也是預(yù)期的結(jié)果.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于nodejs的微信JS-SDK簡單應(yīng)用實現(xiàn)

    基于nodejs的微信JS-SDK簡單應(yīng)用實現(xiàn)

    這篇文章主要介紹了基于nodejs的微信JS-SDK簡單應(yīng)用實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Node.js 日志處理模塊log4js

    Node.js 日志處理模塊log4js

    今天和大家分享一下NodeJS中寫日志的一個常用第三方包:Log4js.下面我們就來詳細探討下吧
    2016-08-08
  • Node.js?連接?MySql?統(tǒng)計組件屬性的使用情況解析

    Node.js?連接?MySql?統(tǒng)計組件屬性的使用情況解析

    這篇文章主要為大家介紹了Node.js?連接?MySql?統(tǒng)計組件屬性的使用情況解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 詳解nodejs 文本操作模塊-fs模塊(五)

    詳解nodejs 文本操作模塊-fs模塊(五)

    本篇文章主要介紹了nodejs 文本操作模塊-fs模塊(五),這里再說最后一個我看來很重要的方法,監(jiān)聽文件或者目錄的的方法watchFile。有興趣的可以了解一下。
    2016-12-12
  • 使用nvm安裝node的過程及注意事項

    使用nvm安裝node的過程及注意事項

    在學(xué)習(xí)vue的過程中,最開始的就是要先安裝nodejs環(huán)境,此處記錄安裝過程及注意事項,首先需要先卸載程序中卸載先前安裝過的nvm,刪除文件管理器中安裝的文件,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • 在node環(huán)境下parse Smarty模板的使用示例代碼

    在node環(huán)境下parse Smarty模板的使用示例代碼

    這篇文章主要介紹了在node環(huán)境下parse Smarty模板的使用示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 快速掌握Node.js事件驅(qū)動模型

    快速掌握Node.js事件驅(qū)動模型

    這篇文章主要為大家詳細介紹了Node.js事件驅(qū)動模型,首先了解一下傳統(tǒng)的線程網(wǎng)絡(luò)模型,然后再學(xué)習(xí)了解Node.js事件驅(qū)動模型,感興趣的小伙伴們可以參考一下
    2016-03-03
  • node.js中stream流中可讀流和可寫流的實現(xiàn)與使用方法實例分析

    node.js中stream流中可讀流和可寫流的實現(xiàn)與使用方法實例分析

    這篇文章主要介紹了node.js中stream流中可讀流和可寫流的實現(xiàn)與使用方法,結(jié)合實例形式分析了node.js stream流可讀流和可寫流基本分類、原理、定義、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2020-02-02
  • nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼

    nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼,有需要的朋友們可以參考下。
    2020-01-01
  • 使用Node.js創(chuàng)建一個簡單的HTTP服務(wù)器的示例代碼

    使用Node.js創(chuàng)建一個簡單的HTTP服務(wù)器的示例代碼

    Node.js 是一種強大的 JavaScript 運行環(huán)境,允許開發(fā)者在服務(wù)器端運行 JavaScript 代碼,它以異步事件驅(qū)動的方式處理大量連接,適合構(gòu)建高效的網(wǎng)絡(luò)應(yīng)用程序,在這篇文章中,我們將一起學(xué)習(xí)如何使用 Node.js 創(chuàng)建一個簡單的 HTTP 服務(wù)器,并通過示例代碼幫你快速上手
    2025-02-02

最新評論

杭锦后旗| 兴安盟| 六安市| 邹平县| 平定县| 米泉市| 丹棱县| 高密市| 乌拉特中旗| 屯昌县| 陵川县| 佛山市| 张家港市| 兴城市| 肇庆市| 海盐县| 桐梓县| 锦州市| 恩平市| 红河县| 阿克| 泸水县| 南皮县| 新昌县| 灵川县| 永仁县| 隆化县| 农安县| 阳信县| 洛宁县| 玉溪市| 鄂托克旗| 邹城市| 芷江| 庆安县| 长汀县| 旌德县| 平顶山市| 同仁县| 凌海市| 兴和县|