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

如何在node中使用async控制并發(fā)

如何在node中使用async 控制并發(fā)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

科爾沁左翼網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,科爾沁左翼網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為科爾沁左翼1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的科爾沁左翼做網(wǎng)站的公司定做!

建立一個(gè) lesson5 項(xiàng)目,在其中編寫代碼。

代碼的入口是 app.js,當(dāng)調(diào)用 node app.js 時(shí),它會(huì)輸出 CNode(https://cnodejs.org/ ) 社區(qū)首頁(yè)的所有主題的標(biāo)題,鏈接和第一條評(píng)論,以 json 的格式。

注意:與上節(jié)課不同,并發(fā)連接數(shù)需要控制在 5 個(gè)。

輸出示例:

[
 {
  "title": "【公告】發(fā)招聘帖的同學(xué)留意一下這里",
  "href": "http://cnodejs.org/topic/541ed2d05e28155f24676a12",
  "comment1": "呵呵呵呵"
 },
 {
  "title": "發(fā)布一款 Sublime Text 下的 JavaScript 語(yǔ)法高亮插件",
  "href": "http://cnodejs.org/topic/54207e2efffeb6de3d61f68f",
  "comment1": "沙發(fā)!"
 }
]

知識(shí)點(diǎn)

學(xué)習(xí) async(https://github.com/caolan/async ) 的使用。這里有個(gè)詳細(xì)的 async demo 演示:https://github.com/alsotang/async_demo

學(xué)習(xí)使用 async 來(lái)控制并發(fā)連接數(shù)。

課程內(nèi)容

lesson4 的代碼其實(shí)是不完美的。為什么這么說(shuō),是因?yàn)樵?lesson4 中,我們一次性發(fā)了 40 個(gè)并發(fā)請(qǐng)求出去,要知道,除去 CNode 的話,別的網(wǎng)站有可能會(huì)因?yàn)槟惆l(fā)出的并發(fā)連接數(shù)太多而當(dāng)你是在惡意請(qǐng)求,把你的 IP 封掉。

我們?cè)趯懪老x的時(shí)候,如果有 1000 個(gè)鏈接要去爬,那么不可能同時(shí)發(fā)出 1000 個(gè)并發(fā)鏈接出去對(duì)不對(duì)?我們需要控制一下并發(fā)的數(shù)量,比如并發(fā) 10 個(gè)就好,然后慢慢抓完這 1000 個(gè)鏈接。

用 async 來(lái)做這件事很簡(jiǎn)單。

這次我們要介紹的是 async 的 mapLimit(arr, limit, iterator, callback) 接口。另外,還有個(gè)常用的控制并發(fā)連接數(shù)的接口是 queue(worker, concurrency),大家可以去 https://github.com/caolan/async#queueworker-concurrency 看看說(shuō)明。

這回我就不帶大家爬網(wǎng)站了,我們來(lái)專注知識(shí)點(diǎn):并發(fā)連接數(shù)控制。

對(duì)了,還有個(gè)問(wèn)題是,什么時(shí)候用 eventproxy,什么時(shí)候使用 async 呢?它們不都是用來(lái)做異步流程控制的嗎?

我的答案是:

當(dāng)你需要去多個(gè)源(一般是小于 10 個(gè))匯總數(shù)據(jù)的時(shí)候,用 eventproxy 方便;當(dāng)你需要用到隊(duì)列,需要控制并發(fā)數(shù),或者你喜歡函數(shù)式編程思維時(shí),使用 async。大部分場(chǎng)景是前者,所以我個(gè)人大部分時(shí)間是用 eventproxy 的。

正題開始。

首先,我們偽造一個(gè) fetchUrl(url, callback) 函數(shù),這個(gè)函數(shù)的作用就是,當(dāng)你通過(guò)

fetchUrl('http://www.baidu.com', function (err, content) {
 // do something with `content`
});

調(diào)用它時(shí),它會(huì)返回 http://www.baidu.com 的頁(yè)面內(nèi)容回來(lái)。

當(dāng)然,我們這里的返回內(nèi)容是假的,返回延時(shí)是隨機(jī)的。并且在它被調(diào)用時(shí),會(huì)告訴你它現(xiàn)在一共被多少個(gè)地方并發(fā)調(diào)用著。

// 并發(fā)連接數(shù)的計(jì)數(shù)器
var concurrencyCount = 0;
var fetchUrl = function (url, callback) {
 // delay 的值在 2000 以內(nèi),是個(gè)隨機(jī)的整數(shù)
 var delay = parseInt((Math.random() * 10000000) % 2000, 10);
 concurrencyCount++;
 console.log('現(xiàn)在的并發(fā)數(shù)是', concurrencyCount, ',正在抓取的是', url, ',耗時(shí)' + delay + '毫秒');
 setTimeout(function () {
  concurrencyCount--;
  callback(null, url + ' html content');
 }, delay);
};

我們接著來(lái)偽造一組鏈接

var urls = [];
for(var i = 0; i < 30; i++) {
 urls.push('http://datasource_' + i);
}

這組鏈接的長(zhǎng)這樣:

如何在node中使用async 控制并發(fā)

接著,我們使用 async.mapLimit 來(lái)并發(fā)抓取,并獲取結(jié)果。

async.mapLimit(urls, 5, function (url, callback) {
 fetchUrl(url, callback);
}, function (err, result) {
 console.log('final:');
 console.log(result);
});

運(yùn)行輸出是這樣的:

如何在node中使用async 控制并發(fā)

關(guān)于如何在node中使用async 控制并發(fā)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站題目:如何在node中使用async控制并發(fā)
標(biāo)題鏈接:http://aaarwkj.com/article2/pjdpic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、企業(yè)建站、靜態(tài)網(wǎng)站軟件開發(fā)、面包屑導(dǎo)航App開發(fā)

廣告

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

手機(jī)網(wǎng)站建設(shè)
久久裸体国语精品国产91| 91国内偷拍富婆国内精品对白 | 日本中文字幕黄色人妻| 国产91黑丝视频在线观看| 亚洲女优中文字幕在线免费| 欧美日韩国产一区在线观看| 色爱区偷拍人妻中文字幕| 国产成人av中文字暮在线| 亚洲一区制服无码中文| 日韩精品中文字幕有码| 欧美亚洲国产精品综合在线| 亚洲精品一区久久狠狠欧美| 亚洲视频一区二区精品| 在线观看日韩三级av| 国产高清成人小视频在线| 亚洲天堂免费观看av| 日韩视频精品推荐一区二区| 啄木乌欧美一区二区三| 日本少妇人妻中文字幕| 国产精品对白久久久久粗| 久久久久久精品国产毛片| 日本熟妇一区二区三区在线视频| 国产在线自拍一区二区| 国产日韩欧美亚洲中文国| 精品久久av一区二区三区| 色婷婷av一区二区三| 中文字幕国产精品一区二| 欧美日韩一级性生活片| 中文字幕成人资源网站| 一区二区亚洲欧美精品| 久碰精品少妇中文字幕av| 成人黄色小视频下载| 九九精品在线观看视频| 巨乳中文乱码国产一区二区| 91精品国产综合久久男男| 伊人不卡中文字幕在线一区| 欧美女人又粗又长亚洲| 亚洲成人日韩成人av| 97超碰97资源在线| 欧美精品亚洲精品日韩| 中文字幕熟女av一区二区|