日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

async 异步编程的应用

發(fā)布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 async 异步编程的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

async 異步編程的應用

1.為了解決node.js在實際項目中的異步特性,跳出回調大坑。 2.優(yōu)雅的維護自己的代碼。 3.更好的對自己的代碼進行流程控制。

async.waterfall

1.async.waterfall(array,function(err,res){})。

array是函數組成的數組,callback(function)是中途出錯或者全部執(zhí)行完后的回調函數。它的特點是串行執(zhí)行函數,并且前一個函數的結果會傳給下一個函數。示例:

async.waterfall([ function(callback){ callback(null, 'one', 'two'); }, function(arg1, arg2, callback){ callback(null, 'three'); }, function(arg1, callback){ // arg1 now equals 'three' callback(null, 'done'); } ], function (err, result) { // result now equals 'done' });

async.series

1.ayync.series(array or obj,function(err,res){}).

第一個傳參可以是數組或者對象,callback返回執(zhí)行的結果集,屬于串行執(zhí)行,即按順序執(zhí)行傳入的function代碼。與waterfall的區(qū)別在于后者能傳參到下一個function進行邏輯操作。不過我們可已通過對變量的賦值達到waterfall同樣的效果。

let data = []; data.push(function(callback){callback(null,1); }) data.push(function(callback){//啟用定時器,模擬異步操作setTimeout(function(){callback(null,2);},2000)}); data.push(function(callback){callback(null,3);});async.series(data,function(err,row){console.log(row); });// 輸出結果 與預期正常:[1,2,3]

async.map and async.each

1.這2個方法感覺用法是一致的 2.async.map(task,callback,function(err,res){});

task是可以是數組或一個對象,類似與在for循環(huán)里面執(zhí)行閉包操作。都是同時執(zhí)行多條異步操作

async.mapSeries and async.eachSeries

1.都是按順序執(zhí)行操作 2.用法與map,each 一致。

async.auto

1.很多時候,你邏輯里面,既有waterfull的也有parallel的,那個就要寫至少2個async函數調用,復雜的情況下,可能更多,但是async.auto的強大是在于,你定義好相互之間的dependencies,他來幫你決定用parallel還是waterfull。 2.async.auto(ojb);

看一個例子:
async.auto({
func1: function (callback, results) {
callback(null, “abc”, “bbc”);
},

func2: function (callback, results) { console.log("Print#1:\n" + util.inspect(results)); callback(null, { "puncha": "during" }); }, func3: ["func2", function (callback, results) { console.log("Print#2:\n" + util.inspect(results)); callback(null, 3); }], func4: ["func1", "func3", function (callback, results) { console.log("Print#3:\n" + util.inspect(results)); callback(null); }] });

func1和func2可以并行執(zhí)行,func3可以和func1并行但是需要等待func2,func4最后執(zhí)行

結尾

1.以上用法是async比較常用的方法,用上他的話就可以不用擔心異步回調大坑了,async不僅可以用于數據庫操作,其他異步操作也適用,比如文件讀寫等。

總結

以上是生活随笔為你收集整理的async 异步编程的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。