国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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
主站蜘蛛池模板: 国产手机在线αⅴ片无码观看 | 亚洲日本一区二区三区高清在线 | 国产成人亚洲欧美三区综合 | 欧美日韩色视频在线观看 | 国产欧美在线观看一区二区 | 亚洲欧美日韩电影 | 欧美一区二区日韩一区二区 | 91视频中文字幕 | 欧美在线观看视频免费 | 国产日本精品 | 日韩 国产 欧美 精品 在线 | 欧美日韩精品一区二区三区四区 | 五月婷婷在线观看 | 人人添人人澡人人澡人人人爽 | 免费又黄又爽又猛大片午夜 | 精品欧美成人高清视频在线观看 | 欧美 日韩 国产 在线 | 国产在线精品观看一区 | 欧美日韩小视频 | 免费一看一级毛片全播放 | 五十路六十路 | 亚洲 欧美 中文 日韩专区 | 91欧美亚洲 | 91在线免费看 | 欧美亚洲国产一区二区 | 久久国产精品最新一区 | 亚洲精品成人久久久影院 | 亚洲电影网址 | 亚洲一区二区三区91 | 久久久久免费精品国产小说 | 国产精品视频免费观看 | 欧美小视频在线观看 | 欧美日视频 | 亚洲图片欧美在线 | 欧美人一级淫片a免费播放 欧美精品专区免费观看 | 人人添人人澡人人澡人人人爽 | 热久久国产欧美一区二区精品 | 国产精品欧美一区二区三区 | 精品72久久久久久久中文字幕 | 精品一区二区三区四区电影 | 亚洲区欧美 |