zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    c语言中float、double、long double在内存中存储方式
    linux路由表配置
    linux下ip命令用法
    Ajax与Comet
    JavaScript之JSON
    Mustache学习
    微信小程序环境搭建
    JavaScript之模仿块级作用域
    JavaScript之call()和apply()方法详解
    JavaScript引用类型之Array数组之强大的splice()方法
  • 原文地址:https://www.cnblogs.com/yangluping/p/6504904.html
Copyright © 2011-2022 走看看