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

首頁 > 語言 > JavaScript > 正文

JavaScript中使用Async實現異步控制

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

async官方DOC

介紹

node安裝

npm install async --save

使用

var async = require('async')

js文件

github.com/caolan/asyn…

async提供了很多函數用于異步流程控制,下面是async核心的幾個函數,完整的函數請看async官方DOC

async.map(['file1','file2','file3'], fs.stat, function(err, results) {  // results is now an array of stats for each file  });  async.filter(['file1','file2','file3'], function(filePath, callback) {   fs.access(filePath, function(err) {    callback(null, !err)   });  }, function(err, results) {    // results now equals an array of the existing files  });  async.parallel([    function(callback) { ... },    function(callback) { ... }  ], function(err, results) {    // optional callback  });  async.series([    function(callback) { ... },    function(callback) { ... }  ]);

series串行

series 的作用就是按照順序一次執行。

async.series([ function(callback) {  setTimeout(function() {   callback(null, 1)    }, 2000);  }, function(callback) {  callback(null, 2); }], function(err, results) {  console.log(results); });

輸出結果為

[ 1, 2 ]

series 函數的第一個參數可以是一個數組也可以是一個JSON對象,參數類型不同,影響的是返回數據的格式。

async.series({  one: function(callback){    callback(null, 1);  },  two: function(callback){    callback(null, 2);  }},function(err, results) {  console.log(results);});

輸出為

{one: 1, two: 2}

waterfall瀑布流

waterfall 和 series 函數都是按照順序執行,不同之處是 waterfall 每個函數產生的值都可以傳遞給下一個函數, series 不可以。

async.waterfall([  function(callback) {    callback(null, 'one', 'two');  },  function(arg1, arg2, callback) {    // arg1 now equals 'one' and arg2 now equals 'two'    console.log('function 2')    console.log('arg1: ' + arg1)    console.log('arg2: ' + arg2)    callback(null, 'three');  },  function(arg1, callback) {    console.log('function 3')    console.log('arg1: ' + arg1)      // arg1 now equals 'three'    callback(null, 'done');  }], function(err, result) {  // result now equals 'done'  console.log(result);});

輸出

function 2
arg1: one
arg2: two
function 3
arg1: three
done

waterfall 第一個參數只能為數組。當中途有函數出錯,其err直接傳給最終callback,結果被丟棄,后面的函數不再執行。

parallel(tasks, [callback])

paraller 函數是并行執行多個函數,每個函數都是立即執行,不需要等待其它函數先執行。

傳給最終callback的數組中的數據按照tasks中聲明的順序,而不是執行完成的順序。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 崇文区| 太湖县| 镇沅| 黑山县| 涞源县| 涞水县| 雅安市| 呼玛县| 彭州市| 高碑店市| 锡林郭勒盟| 贵德县| 华阴市| 梓潼县| 封丘县| 怀仁县| 渝中区| 孟津县| 含山县| 财经| 无棣县| 泾源县| 友谊县| 利川市| 宜宾县| 隆回县| 章丘市| 新丰县| 嘉禾县| 榆树市| 景宁| 湄潭县| 济宁市| 图木舒克市| 天等县| 柘荣县| 蕉岭县| 潞西市| 大名县| 津南区| 九台市|