waterfall , parallel ,  series  ,  eachSeries

//var async = require('async');

/***
*①
* 串行有关联 执行每个函数
* waterfall 前一个函数的输出作为后一个的输入
*
*
*/
// var a = 10;
// async.waterfall([
// function (cb) {
// console.log("getb")
// setTimeout(function () {
// if (a == 0) {
// cb(new Error("a不能为0"));
// } else {
// var b = 1 / a;
// cb(null, b); //在这里通过回调函数把b传给下一个函数,记得一定要加上null,才能调用数组中得下一个函数,否则,会直接调用最终的回调函数,然后结束函数,则后面的函数将不再执行
// }
// }, 1000);
// },
// function (b, cb) {
// setTimeout(function () {
// console.log("getc")
// var c = b + 1;
// cb(null, c);
// }, 1000);
// }
// ], function (err, result) {
// if (err) {
// console.log(err);
// } else {
// console.log('c:' + result)
// }
// }); /**
* ②并行且无关联
* parallel 并行无依赖
* 并行执行每个函数
*/ // async.parallel([
// //并行同时执行
// function(callback) {
// setTimeout(function() {
// callback(null, 'one');
// }, 200);
// },
// function(callback) {
// setTimeout(function() {
// callback(null, 'two');
// }, 100);
// }
// ],
//
// function(err, results) {
// //等上面两个执行完返回结果
// console.log(results[0]);
// console.log(results[1]);
// }); /***
* ③
* series 串行无关联执行函数组
*/
// console.time('series');
// var async = require('async');
//
// async.series({
// one: function (done) {
// //处理逻辑
// done(null, 'one');
// },
// two: function (done) {
// //处理逻辑
// done(null, 'tow');
// },
// three: function (done) {
// //处理逻辑
// done(null, 'three');
// },
// four: function (done) {
// //处理逻辑
// done(null, 'four');
// }
// }, function (error, result) {
// console.log('one:', result.one);
// console.log('two:', result.two);
// console.log('three:', result.three);
// console.log('four:', result.four);
// console.timeEnd('series');
// }) /**
* ④
* eachSeries 是一个个按顺序执行
* @type {[number,number]}
*/ // var arr = [300,600];
// async.eachSeries(arr, function(item, callback) {
// setTimeout(function(){
// console.log(item);
// //这个函数告诉eachSeries函数,这个异步操作状态,是成功了,还是失败了,传(false)null表示这个异步成功完成,true(1)执行失败,还未执行的不再执行
// callback(null);
// //callback("发生异常");
// }, item);
//
// }, function(err) {
// //所有的异步成功执行完成,err等于null
// console.log("成功执行了");
// });

async文档地址    https://caolan.github.io/async/docs.html#parallel

nodejs中async使用的更多相关文章

  1. (四)、 nodejs中Async详解之一:流程控制

    为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...

  2. nodejs中Async详解之一:流程控制

    为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...

  3. Nodejs中Async模块的流程控制方法

    首先,使用Asycn模块需要安装,它不是node自带的.其次,该模块有大约20多个流程控制方法,我们在这里仅分析常用的series, parallel, waterfall, auto这四种,并且尽量 ...

  4. 在Nodejs中如何调用C#的代码

    最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互, 直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后 ...

  5. 如何优雅的处理Nodejs中的异步回调

    前言 Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用.在Nodejs中大部分的I/O操作几乎都是异步的,也就是我们处理I/O ...

  6. nodejs中异步

    nodejs中的异步 1 nodejs 中的异步存在吗? 现在有点 javascript 基础的人都在听说过 nodejs ,而只要与 javascript 打交到人都会用或者是将要使用 nodejs ...

  7. nodejs中http-proxy使用小结

    最近在写xmocker的工具,用于开发前期的mock数据,不可避免的用到了代理的中间件.当然,github上有关于http-proxy封装的中间件.毕竟是自己练手的项目,就自己写了个中间件,方便定制功 ...

  8. NodeJs使用async让代码按顺序串行执行

    描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...

  9. 在Nodejs中贯彻单元测试

    在团队合作中,你写好了一个函数,供队友使用,跑去跟你的队友说,你传个A值进去,他就会返回B结果了.过了一会,你队友跑过来说,我传个A值却返回C结果,怎么回事?你丫的有没有测试过啊? 大家一起写个项目, ...

随机推荐

  1. 从零搭建生产环境的ghost2.0博客

    当前安装过程是在ghost cli 1.9.2上的,由于ghost更新特别快,我安装我个人博客cmlanche.com的时候还是1.9.1,当时没碰到啥问题,到1.9.2就有一点点不一样了,所以要注意 ...

  2. HashMap在JDK1.8中并发操作,代码测试以及源码分析

    HashMap在JDK1.8中并发操作不会出现死循环,只会出现缺数据.测试如下: package JDKSource; import java.util.HashMap; import java.ut ...

  3. openssl rsautl和openssl pkeyutl(文件的非对称加密)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rsautl是rsa的工具,相当于rsa.dgst的部分功能集合,可用于生成 ...

  4. 简要描述 JavaScript 中定义函数的几种方式

    JavaScript 中,有三种定义函数的方式: 1.函数语句:即使用 function 关键字显式定义函数.如: function f(x){ return x+1; }  2.函数定义表达式:也称 ...

  5. MVC 【Razor 视图引擎】案例分析

    using MvcApplication1.Models; using System; using System.Collections.Generic; using System.Linq; usi ...

  6. Matlab forward Euler demo

    % forward Euler demo % take two steps in the solution of % dy/dt = y, y(0) = 1 % exact solution is y ...

  7. 初学HTML-8

    video标签:播放视频 格式一:<video src=""> </video> video标签的属性: src:用于告诉video标签需要播放的视频地址. ...

  8. node通过QQ邮箱发送邮件

    在nodejs里面使用插件,不多说,首先下载: npm install emailjs 下载好之后,先别急着写代码,应该先设置一下,我这里用QQ邮箱举例子. 首先登陆QQ邮箱,然后点击:设置-> ...

  9. lfs(systemv版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记第3页:https://www.cnblogs.com/renren-study-notes ...

  10. python之锁, 队列

    进程的其他方法 进程id,进程名字,查看进程是否活着is_alive()  terminate()发送结束进程的信号 import time import os from multiprocessin ...