nodejs async.whilst用法
由于js io 操作的異步特性,所以有很多的流程控制的方法,其中async的whilst主要是用于循環(huán)的流程控制,為什么會(huì)用到這個(gè)async.whilst呢?
有這樣一個(gè)問(wèn)題:
var i = 0;
while(i<100){
func.doIo(function(){
dosomething();
// i++;
})
i++
}
假如你希望這個(gè)循環(huán)循環(huán)一百次,每一次執(zhí)行一次里邊的io操作,結(jié)果你會(huì)發(fā)現(xiàn)基本上你沒(méi)辦法用while實(shí)現(xiàn)這個(gè)操作。無(wú)論你是把i++放在io的回調(diào)里邊還是放在外邊,結(jié)果都并不是你想的那樣。
這個(gè)時(shí)候就需要async.whilst.
看代碼:
var async = require('async');
var i = 0;
var j = 0;
async.whilst(
function(){
console.log('check'+i);
return i<6;
},
function(whileCb){
j=0;
i++;
console.log('while:'+i)
async.whilst(
function(){
//console.log('check'+j);
return j<5;
},
function(whileCb1){
j++;
console.log('whileCb1'+j);
whileCb1();
},
function(err){
console.log('second');
whileCb(); // invoke when inner whilst done
}
)
},
function(err){
console.log(err);
}
)
這段代碼內(nèi)層的循環(huán)相當(dāng)于一次io操作(注意:我這是要模擬IO操作,IO操作的特點(diǎn)是異步的,如果是純粹的邏輯運(yùn)算,就用while就可以實(shí)現(xiàn)),我們要實(shí)現(xiàn)的目標(biāo)是外循環(huán)循環(huán)一次,里邊循環(huán)5次。大家注意whileCb()所放的位置,這個(gè)位置的意思就是如果到達(dá)了條件才再次調(diào)用循環(huán),可以仔細(xì)理解一下和while的區(qū)別。
async.whilst里邊有3個(gè)function,第一個(gè)是循環(huán)條件,第二個(gè)是循環(huán)體,第三個(gè)是結(jié)束或者err時(shí)進(jìn)入。所以用whilst可以控制有io的流程控制。
送你幾顆比特幣玩玩:
https://www.coincola.app/acts/red-packet?type=invitation&packet_id=gBbVudr7GwuTF3r71ihUq8vDiuiNdAgL&lang=zh-CN
總結(jié)
以上是生活随笔為你收集整理的nodejs async.whilst用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中国人民银行的前世今生
- 下一篇: 京东徐雷:百亿补贴优惠了老用户带来了新用