nodejs async.whilst用法


由於js io 操作的異步特性,所以有很多的流程控制的方法,其中async的whilst主要是用於循環的流程控制,為什么會用到這個async.whilst呢?

有這樣一個問題:

var i = 0;
while(i<100){
  func.doIo(function(){
    dosomething();
// i++;   })   i++ }

假如你希望這個循環循環一百次,每一次執行一次里邊的io操作,結果你會發現基本上你沒辦法用while實現這個操作。無論你是把i++放在io的回調里邊還是放在外邊,結果都並不是你想的那樣。

這個時候就需要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);
	}

)

這段代碼內層的循環相當於一次io操作(注意:我這是要模擬IO操作,IO操作的特點是異步的,如果是純粹的邏輯運算,就用while就可以實現),我們要實現的目標是外循環循環一次,里邊循環5次。大家注意whileCb()所放的位置,這個位置的意思就是如果到達了條件才再次調用循環,可以仔細理解一下和while的區別。

async.whilst里邊有3個function,第一個是循環條件,第二個是循環體,第三個是結束或者err時進入。所以用whilst可以控制有io的流程控制。

 

送你幾顆比特幣玩玩:

https://www.coincola.app/acts/red-packet?type=invitation&packet_id=gBbVudr7GwuTF3r71ihUq8vDiuiNdAgL&lang=zh-CN

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM