欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Javascript如何異步編程async-創(chuàng)新互聯(lián)

這篇文章主要講解了“Javascript如何異步編程async”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Javascript如何異步編程async”吧!

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)宣化免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

async官方DOC

介紹

node安裝

npm install async --save

使用

var async = require('async')

js文件

https://github.com/caolan/async/tree/master/dist

async提供了很多函數(shù)用于異步流程控制,下面是async核心的幾個函數(shù),完整的函數(shù)請看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的作用就是按照順序一次執(zhí)行。

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

輸出結(jié)果為

[ 1, 2 ]

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

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函數(shù)都是按照順序執(zhí)行,不同之處是waterfall每個函數(shù)產(chǎn)生的值都可以傳遞給下一個函數(shù),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第一個參數(shù)只能為數(shù)組。當(dāng)中途有函數(shù)出錯,其err直接傳給最終callback,結(jié)果被丟棄,后面的函數(shù)不再執(zhí)行。

parallel(tasks, [callback])

paraller函數(shù)是并行執(zhí)行多個函數(shù),每個函數(shù)都是立即執(zhí)行,不需要等待其它函數(shù)先執(zhí)行。
傳給最終callback的數(shù)組中的數(shù)據(jù)按照tasks中聲明的順序,而不是執(zhí)行完成的順序。

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

});

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

將示例中tasks的回調(diào)函數(shù)用setTimeout在1000毫秒后調(diào)用,然后在parallel的回調(diào)函數(shù)中輸出results,看一看整個過程花費(fèi)了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函數(shù)和parallel類似,但是它多了一個參數(shù)limit。 limit參數(shù)限制任務(wù)只能同時并發(fā)一定數(shù)量,而不是無限制并發(fā),示例如下:

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

將示例中tasks的回調(diào)函數(shù)用setTimeout在1000毫秒后調(diào)用,limit參數(shù)設(shè)置為1,然后在parallelLimit的回調(diào)函數(shù)中輸出results,看一看整個過程花費(fèi)了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函數(shù)遍歷傳入的數(shù)組,并執(zhí)行同樣的操作,最終返回結(jié)果

cool:數(shù)組

iteratee:對數(shù)組每一項要執(zhí)行的函數(shù)

callbackopt:回調(diào)函數(shù)

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”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Javascript如何異步編程async這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:Javascript如何異步編程async-創(chuàng)新互聯(lián)
文章來源:http://aaarwkj.com/article28/dgoojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站策劃、靜態(tài)網(wǎng)站網(wǎng)站設(shè)計公司、電子商務(wù)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
日本韩国欧美一区二区在线| 日韩欧美一区二区三区不卡在线 | 亚洲国产一区二区精品| 日韩av一区二区人妻| 亚洲精品国产第一区第二区| 色综合色综合色综合色| 午夜性色福利在线播放| 国产精品自产在线观看一| 外国男人搞亚洲女人在线| 人妻中文字幕精品系列| 亚洲人妻在线一区二区三区| 美女高潮久久久777| 国产午夜福利视频合集| 欧美精品国产精品久久| 免费观看国产裸体视频| 日本熟妇一区二区三区高清视频| 亚洲欧美一区二区国产| 在线看黄色片播放器日韩| 久久精品资源综合网| 亚洲一区二区日韩人妻| 青草草草草草在线观看| 91亚洲精品久久久蜜桃网站| 91嫩草国产在线观看| 国产午夜亚洲精品羞羞网站| 一区二区三区欧美黑人| 亚洲欧洲日韩另类在线| 国产精品一区2区3区| 日韩一区二区三级电影| 青青草免费在线播放视频网站| av影片在线观看亚洲天堂| 国产精品国语对白av处女| 中文字幕日本乱码精品久久| 国产精品国产成人免费看| 国产精品久久高清免费| 亚洲欧美二区中文字幕| 中文在线中文天堂黄色片| 国内精品久久大型新型| 久久国产精品欧美熟妇| 涩久久悠悠一区二区三区| 熟妇人妻精品一区二区| 啄木乌欧美一区二区三|