亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

Nodejs異步流程框架async的方法

2024-05-06 16:51:56
字體:
來源:轉載
供稿:網友

Async的簡單介紹:

Async是一個流程控制工具包,提供了直接而強大的異步功能。基于Javascript為Node.js設計,同時也可以直接在瀏覽器中使用。Async提供了大約20個函數,包括常用的map, reduce, filter, forEach等,異步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等。

https://github.com/caolan/async

我們常用的是以下四種:

  • 串行無關聯
  • 串行有關聯
  • 并行無關聯
  • 智能控制

1.async.series:串行無關聯:

多個函數或方法要依次執行,但是他們之間并沒有什么聯系,只有先后的順序,比如我要寫一個文件,寫完之后像用戶發送郵件,這兩者之間沒有必然的聯系,但是發郵件必須在寫文件完成之后。
async里有一個方法series可以實現這一流程,代碼實現如下:

var async = require('async');console.time('series');async.series({  one: function(callback) {    callback(null, 'one');//callback('i am err','one');異常處理  },  two: function(callback) {    callback(null, 'two');  },}, function(error, result) {  //最后結果  console.log('error: ' + error);  console.log('result: ' + result);  console.timeEnd('series');});// error: null// result: [object Object]// series: 4.472ms

2.async.waterfall:串行有關聯

瀑布流函數,串行執行數組中的每一個函數最后執行回調。 語法:async.waterfall(tasks,callback) 第一個參數tasks是一個數組,數組包含的是需要依次執行的函數。

第二個參數為回調函數,當瀑布流函數(即tasks數組中的函數)執行出現錯誤時會執行這個回調函數并將錯誤信息返回,當瀑布流函數無錯誤時,會在執行完tasks數組中包含的函數后執行這個回調函數。

用法示例: 一般用法:

async.waterfall([  myFirstFun,  mySecondFun,  myLastFun],function(err,result) { // result回調函數  // result 相當于tasks數組中最后一個函數(myLastFun)的返回值done  console.log(result);  // myLastFun})function myFirstFun(callback) {  callback(null,'one','two');}function mySecondFun(arg1,arg2,callback) {  // arg1 相當于 'one' ,arg2 相當于 'two'  callback(null,'three');}function myLastFun(arg1,callback) {  // arg1 相當于 'three'  callback(null,'done');}

3.async.parallel:并行無關聯

task并行運行函數集合,而不必等到上一個函數完成。如果任何函數發生錯誤,會立刻執行回調函數,并返回錯誤信息;若沒有發生錯誤,則會再所有tasks函數執行完畢之后用回掉函數將結果返回。

語法:async.parallel(tasks,callback) 代碼示例:

async.parallel([  function(callback) {    setTimeout(function() {      callback(null, 'one');    }, 200);  },  function(callback) {    setTimeout(function() {      callback(null, 'two');    }, 100);  }],function(err, results) {  console.log(result)});

4.async.auto:智能控制

以上都是純串行傳并行,但是當一個場景里,需要使用串行也需要使用并行的時候,雖然分別寫能解決,但是效率不是很高,維護性也不是很好,auto可以解決這一問題。

如下場景:

  • 從某處取得數據
  • 在硬盤上建立一個新的目錄
  • 將數據寫入到目錄下某文件
  • 發送郵件,將文件以附件形式發送給其它人。
  • 可以知道1與2可以并行執行,3需要等1和2完成,4要等3完成。
  • 使用auto來解決
var async = require('async');console.time('auto');async.auto({  getData: function(callback) {    setTimeout(function() {      console.log('1.1: got data');      callback(null, 'mydata');    }, 300);  },  makeFolder: function(callback) {    setTimeout(function() {      console.log('1.1: made folder');      callback(null, 'myfolder');    }, 200);  },  writeFile: ['getData', 'makeFolder', function(callback) {    setTimeout(function() {      console.log('1.1: wrote file');      callback(null, 'myfile');    }, 300);  }],  emailFiles: ['writeFile', function(callback, results) {    console.log('emailed file: ', results.writeFile);    callback(null, results.writeFile);  }]}, function(err, results) {  console.log('err: ', err);  console.log('results: ', results);  console.timeEnd('auto');});

結果如下

1.1: made folder
1.1: got data
1.1: wrote file
emailed file:  myfile
err:  null
results:  { makeFolder: 'myfolder',
  getData: 'mydata',
  writeFile: 'myfile',
  emailFiles: 'myfile' 
}
auto: 650.972ms

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品丝袜久久久久久高清| 国产精品久久久久影院日本| 亚洲欧美日韩一区二区在线| 国产精品igao视频| 97涩涩爰在线观看亚洲| 亚洲国产精品久久久| 欧美中文字幕在线| 久久亚洲成人精品| 日韩av免费在线观看| 日产日韩在线亚洲欧美| 韩国三级日本三级少妇99| 久久久久久久久久国产精品| 国产精品wwww| 91高清视频在线免费观看| 国产亚洲福利一区| 国产一区二区在线播放| 最新91在线视频| 亚洲一区二区三区xxx视频| 亚洲精品福利在线观看| 亚洲成人网在线| 亚洲一区二区福利| www.欧美免费| 欧美福利视频在线观看| 91国产在线精品| 91夜夜揉人人捏人人添红杏| 日韩电影中文字幕在线| 国产精品视频大全| 中文字幕亚洲一区二区三区五十路| 亚洲一区二区三区乱码aⅴ| 久久影视免费观看| 午夜精品视频在线| 一区二区福利视频| 精品二区三区线观看| 欧美电影免费观看大全| 欧洲亚洲免费视频| 亚洲国产日韩欧美在线99| 欧美xxxx18国产| 91sao在线观看国产| 亚洲成人网在线观看| 精品调教chinesegay| 成人黄色av播放免费| 亚洲国产精品悠悠久久琪琪| 神马国产精品影院av| 欧美另类在线观看| 亚洲精品在线视频| 亚洲美女av黄| 日韩小视频在线| 少妇精69xxtheporn| 久久精品影视伊人网| 国产亚洲人成网站在线观看| 色综合色综合久久综合频道88| 日韩av大片免费看| 亚洲女人天堂网| 久久精品电影网站| 日韩网站免费观看高清| 久久99精品视频一区97| 91成人性视频| 精品中文字幕视频| 欧美精品videos另类日本| 国产欧美日韩精品丝袜高跟鞋| 欧美老妇交乱视频| 亚洲国产97在线精品一区| 国产精品九九久久久久久久| 国产精品久久久av久久久| 国产成人综合久久| 97国产精品人人爽人人做| 91av免费观看91av精品在线| 亚州欧美日韩中文视频| 国产日韩精品综合网站| 日韩av手机在线看| 国产激情视频一区| 国产精品成人观看视频国产奇米| 欧美野外wwwxxx| 亚洲第一男人av| www.日韩系列| 亚洲成人久久久| 日日摸夜夜添一区| 高清日韩电视剧大全免费播放在线观看| 国产一区红桃视频| 26uuu亚洲伊人春色| 92国产精品久久久久首页| 成人黄色av网站| 欧美激情videos| 亚洲一区二区精品| 欧美一级大片视频| 精品久久久久久| 亚洲图片制服诱惑| 啊v视频在线一区二区三区| 国产成人精品久久亚洲高清不卡| 亚洲大胆人体在线| 日韩av片电影专区| 97视频com| 成人h视频在线观看播放| 日韩一区二区三区xxxx| 亚洲国产小视频在线观看| 国产成人午夜视频网址| 日韩中文av在线| 在线播放日韩欧美| 日韩电影中文字幕在线观看| 高清日韩电视剧大全免费播放在线观看| 亚洲高清久久网| 国产精品丝袜久久久久久不卡| 成人久久久久久久| 亚洲天堂视频在线观看| 97不卡在线视频| 国产精品专区h在线观看| 亚洲tv在线观看| 日韩毛片中文字幕| 91九色视频在线| 亚洲国产精品久久久久秋霞不卡| 国产精品毛片a∨一区二区三区|国| 青青青国产精品一区二区| 欧美激情视频一区二区| 久久精品国产综合| 中文字幕日本精品| 国产精品成人av性教育| 亚洲小视频在线| 国产成人在线视频| 久久中文字幕国产| 精品偷拍一区二区三区在线看| 亚洲成人教育av| 98精品国产自产在线观看| 成人黄色免费网站在线观看| 91免费综合在线| 欧美激情区在线播放| 亚洲片在线观看| 亚洲福利小视频| 亚洲美女视频网站| 欧美一级视频一区二区| 欧美性高潮在线| 国产亚洲精品久久久优势| 亚洲伦理中文字幕| 久久久久久久久久久国产| 亚洲已满18点击进入在线看片| 欧美日韩一区二区在线| 91九色视频在线| 亚洲精品xxx| 国内精品中文字幕| 欧美成人精品一区| 日韩www在线| www.亚洲男人天堂| 国产精品久久久久91| 亚洲美女av黄| 韩剧1988在线观看免费完整版| 在线视频日韩精品| 日日噜噜噜夜夜爽亚洲精品| 日韩av电影免费观看高清| 亚洲电影中文字幕| 国产精品免费网站| 欧美—级a级欧美特级ar全黄| 欧美激情视频一区二区三区不卡| 在线播放日韩欧美| 欧美精品一区三区| 日日狠狠久久偷偷四色综合免费| 国产一区二区三区18| 视频一区视频二区国产精品| 亚洲国产精品成人va在线观看| 精品少妇v888av| 亚洲xxxx做受欧美| 日本精品免费一区二区三区| 成人妇女淫片aaaa视频| 欧美成人激情视频免费观看| 欧洲亚洲免费视频| 国产成人综合精品|