国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

從零學習node.js之詳解異步控制工具async(八)

2024-05-06 15:10:43
字體:
來源:轉載
供稿:網友

前言

大家在編寫異步程序時,最頭痛的就是不知道結果什么時候返回給我們,然后執行后面的操作,很多時候只能把后面的操作放到返回成功的函數里,或者使用計數器等方法。

比較典型的兩個就是:后面的操作需要依賴上一個異步操作的結果;多個異步操作并行執行,都執行完成后再執行接下來的操作。

這兩個操作中,第一個異步的程序我們可能會寫成這樣:

db.select(SQL1, function(res1){ db.delete(SQL2, function(res2){ db.insert(SQL3, function(res3){ // ... }) })});

將后面的操作寫到執行成功后的回調函數里。第2個并行的異步操作,可以使用計數器的方法,每個異步調用成功時,計數器加1,當所有的異步都調用成功后,再接著執行:

var count = 0;var success = function(){ count++; if(count>=3){   console.log('執行完畢...'); }}var select = function(){ db.select(sql, function(res){  success(); })}var select2 = function(){ db.select(sql, function(res){  success(); })}var select3 = function(){ db.select(sql, function(res){  success(); })}select();select2();select3();

這些編寫方式非常麻煩,而且代碼邏輯比較混亂,調試起來也很不方便。那么就要用到異步控制的利器async了。

介紹

async的作用是進行流程的控制,而且提供了非常多的方法可供調用。

這些方法可以分為三大類:

集合類(Collections) 流程控制類(Control Flow) 工具類(Utils)

下面我們從這三個分類里分別挑出幾個方法進行講解。

二、函數介紹

async中提供了非常多的方法可供使用,我們僅僅是講解其中幾個比較有代表性的,其他的可以訪問官方文檔:http://caolan.github.io/async/docs.html。

2.1 集合類

集合類中的方法主要有some, ‘map', ‘each', ‘every'等,這些方法是對數組或組合進行某個相同的操作后,統一執行回調函數。

我們以map為例,map對集合中的每一個元素,執行某個相同的異步操作,得到結果。所有的結果將匯總到最終的callback里。
使用方法,map接收三個參數,分別是:

參數名稱 類型 說明
coll iteratee callback
Array | Iterable | Object function function
需要處理數組,集合或其他可迭代的類型 迭代方法,用來對集合中的每一項進行處理。該方法接收兩個參數(item, callback);item為集合中的每一項, callback為回調函數。callback需要帶有err(有時可能為null)和處理后的數據,callback(err, data) 最終回調函數,當集合處理完畢后調用此函數,傳遞兩個參數err和result,result為之前處理后的所有的結果的集合
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宜阳县| 金坛市| 五台县| 阳西县| 远安县| 威远县| 尚志市| 玛纳斯县| 泸西县| 吉林省| 昌邑市| 泰和县| 临湘市| 淮南市| 昭苏县| 张家界市| 多伦县| 南岸区| 巨野县| 肃宁县| 随州市| 吉林省| 兴城市| 西峡县| 衡东县| 临颍县| 中山市| 千阳县| 蓝山县| 清水县| 黔西县| 金川县| 尼木县| 石家庄市| 芷江| 当阳市| 金坛市| 金坛市| 通化市| 大港区| 湟中县|