日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

nodejs async.whilst用法

發(fā)布時(shí)間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 nodejs async.whilst用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。