• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    JavaScript中使用Async實現異步控制

    來源:懂視網 責編:小采 時間:2020-11-27 22:32:47
    文檔

    JavaScript中使用Async實現異步控制

    JavaScript中使用Async實現異步控制:async官方DOC 介紹 node安裝 npm install async --save 使用 var async = require('async') js文件 github.com/caolan/asyn… async提供了很多函數用于異步流程控制,下面是async核心的幾個函數,完整的函數請看async官方DOC async.
    推薦度:
    導讀JavaScript中使用Async實現異步控制:async官方DOC 介紹 node安裝 npm install async --save 使用 var async = require('async') js文件 github.com/caolan/asyn… async提供了很多函數用于異步流程控制,下面是async核心的幾個函數,完整的函數請看async官方DOC async.

    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中聲明的順序,而不是執行完成的順序。

    async.parallel([
     function(callback){
     callback(null, 'one');
     },
     function(callback){
     callback(null, 'two');
     }
    ],
    function(err, results){
    
    });

    tasks參數可以是一個數組或是json對象,和 series 函數一樣,tasks參數類型不同,返回的results格式會不一樣。

    將示例中tasks的回調函數用setTimeout在1000毫秒后調用,然后在 parallel 的回調函數中輸出results,看一看整個過程花費了1s還是2s。

    var async=require("async");
    async.parallel([
     function(callback){
     setTimeout(function(){
     callback(null, 'one')
     },1000);
     },
     function(callback){
     setTimeout(function(){
     callback(null, 'two')
     },1000);
     }
    ],
    function(err, results){
     console.log(results);
    });
    parallelLimit(tasks, limit, [callback])

    parallelLimit 函數和 parallel 類似,但是它多了一個參數limit。 limit參數限制任務只能同時并發一定數量,而不是無限制并發,示例如下:

    async.parallelLimit([
     function(callback){
     callback(null, 'one');
     },
     function(callback){
     callback(null, 'two');
     }
    ],
    2,
    function(err, results){
    });

    將示例中tasks的回調函數用setTimeout在1000毫秒后調用,limit參數設置為1,然后在parallelLimit的回調函數中輸出results,看一看整個過程花費了1s還是2s。

    var async=require("async");
    async.parallelLimit([
     function(callback){
     setTimeout(function(){
     callback(null, 'one');
     }, 1000);
     },
     function(callback){
     setTimeout(function(){
     callback(null, 'two');
     }, 1000);
     }
    ],
    1,
    function(err, results){
     console.log(results);
    });
    map(coll, iteratee, callbackopt)

    map 函數遍歷傳入的數組,并執行同樣的操作,最終返回結果

    cool:數組

    iteratee:對數組每一項要執行的函數

    callbackopt:回調函數

    async.map([1, 2, 3, 4, 5],
     function(item, callback) {
     callback(null, item + 5)
     },
     function(err, result) {
     console.log(result)
     })
    [ 6, 7, 8, 9, 10 ]

    總結

    以上所述是小編給大家介紹的JavaScript中使用Async實現異步控制,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript中使用Async實現異步控制

    JavaScript中使用Async實現異步控制:async官方DOC 介紹 node安裝 npm install async --save 使用 var async = require('async') js文件 github.com/caolan/asyn… async提供了很多函數用于異步流程控制,下面是async核心的幾個函數,完整的函數請看async官方DOC async.
    推薦度:
    標簽: js 中使用 javascript
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 8050免费午夜一级国产精品| 日韩精品欧美亚洲| 国内精品久久久久国产盗摄| 久久精品国产亚洲精品2020 | 久久噜噜久久久精品66| 国产伦精品一区二区三区女 | 久久国产成人精品麻豆| 国产精品一区二区久久国产| 中文字幕日韩精品在线| 久久久精品国产亚洲成人满18免费网站 | 亚洲精品无码成人AAA片| 久久精品国产一区二区三区不卡| 国产69精品久久久久9999| 欧美精品香蕉在线观看网| 98视频精品全部国产| 久久精品国产99久久无毒不卡 | 国产成人精品久久亚洲高清不卡 | 国产a∨精品一区二区三区不卡| 日本内射精品一区二区视频| 亚洲午夜福利精品久久 | 久久99精品国产麻豆蜜芽| 国产精品伦理久久久久久| 亚洲精品免费观看| 精品综合久久久久久97超人| 2021久久精品国产99国产精品| 精品无码人妻一区二区三区品| 欧美精品中文字幕亚洲专区 | 国产精品免费视频观看拍拍| 51精品资源视频在线播放| 久久精品国产免费一区| 久久精品国产99国产精偷| 久久国产精品久久久| 欧美性videofree精品| 97精品人妻一区二区三区香蕉| 亚洲国语精品自产拍在线观看 | 欧美亚洲国产精品第一页| 国产精品麻豆高清在线观看| 99精品视频3| 精品福利一区二区三| 久久夜色精品国产亚洲| 94久久国产乱子伦精品免费|