场景:

1、图片上传服务器

2、图片写入磁盘

3、图片写入数据库

在nodejs里面这三种方式都是异步操作,不想java其他语言同步进行,这就需要对异步流程进行控制,保证1,2,3逐步进行。有可能1还没完成,2和3可能就开始了,所以需要控制流程。

异步流程控制对象async
1、串行无关联:async.series(1,2,3按照顺序执行)
2、并行无关联:async.parallel(1,2,3一起跑)
3、串行有关联:waterfall(瀑布流关系,1完成传给2,2完成传给3)
4、parallelLimit:parallelLimit函数和parallel类似,但是它多了一个参数limit。(同一时间只能并行2个或者三个任务)
limit参数限制任务只能同时并发一定数量,而不是无限制并发

先要进行安装:npm install async --save-dev

串行无关联:async.series测试:

let async=require('async');
function exec(){async.series({one:function(done){ii=0;setInterval(function(){console.log('aaa='+new Date());ii++;if(ii==3){clearInterval(this);done(null,'one完毕');}},1000);},two:function(done){jj=0;setInterval(function(){console.log('bbb='+new Date());jj++;if(jj==3){clearInterval(this);done(null,'two完毕');}},1000);}},function(err,rs){console.log(err);console.log(rs);})
}
exec();
console.log('主进程执行完毕');

并行无关联:async.parallel测试:

let async=require('async');
function exec(){async.parallel({one:function(done){ii=0;setInterval(function(){console.log('aaa='+new Date());ii++;if(ii==3){clearInterval(this);done(null,'one完毕');}},1000);},two:function(done){jj=0;setInterval(function(){console.log('bbb='+new Date());jj++;if(jj==3){clearInterval(this);done(null,'two完毕');}},1000);}},function(err,rs){console.log(err);console.log(rs);})
}
exec();
console.log('主进程执行完毕');

串行有关联:waterfall测试:

let async=require('async');
function exec(){//第一个的回调是第二个的参数async.waterfall([function(done){ii=0;setInterval(function(){console.log('aaa='+new Date());ii++;if(ii==3){clearInterval(this);done(null,'one完毕');}},1000);},function(preValue,done){jj=0;setInterval(function(){console.log('bbb='+new Date());jj++;if(jj==3){clearInterval(this);done(null,preValue+'two完毕');}},1000);}],function(err,rs){console.log(err);console.log(rs);})
}
exec();
console.log('主进程执行完毕');

nodejs异步流程控制相关推荐

  1. nodejs异步流程控制co 模块

    万恶的回调 对前端工程师来说,异步回调是再熟悉不过了,浏览器中的各种交互逻辑都是通过事件回调实现的,前端逻辑越来越复杂,导致回调函数越来越多,同时 nodejs 的流行也让 javascript 在后 ...

  2. 某大型银行深化系统技术方案之八:核心层之异步流程控制机制

    传送门☞Android兵器谱☞转载请注明☞http://blog.csdn.net/leverage_1229 核心层 核心层主要提供后台业务集中处理中最基本.共性的信息处理.流程调度和相关的管理功能 ...

  3. JavaScript异步流程控制的前世今生

    js的流程控制老大难问题就是异步回调. 一个流程过程,往往会出现回调地狱,这个回调异步控制就被提上研究得议程. 目前有实现的回调流程有以下几种 回调函数实现 事件监听 发布订阅 Promise/A+ ...

  4. 流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!

    谢谢n͛i͛g͛h͛t͛i͛r͛e͛大大指出的关于Promise中catch用的不到位的错误,贴上大大推荐的文章Promise中的菜鸟和高阶错误,文章很详细说明了一些Promise使用中的错误和指导. ...

  5. JS_异步任务之流程控制

    需知: 1,JavaScript只有一个核心的主线程,但它有存放异步任务的任务队列(task queue). 2,主线程中是正在运行的同步任务(异步任务开始运行则也会变为同步任务),每次同步任务完成后 ...

  6. Node.js 模块之Nimble流程控制

    NodeJS异步的特性有时候会导致程序非常的难看,回调一层套着一层,这个时候就要用流程控制模块来控制究竟是同步还是异步了. Nimble是一个轻量.可移植的函数式流程控制模块.经过最小化和压缩后只有8 ...

  7. 小程序怎么处理轮训ajax,微信小程序中使用Promise进行异步流程处理的实例详解...

    微信小程序中使用Promise进行异步流程处理的实例详解 我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理.比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间( ...

  8. Web前端学习笔记11:JavaScript_注释_输入输出_变量_数据类型_关键字_保留字_运算符_流程控制

    文章目录 JavaScript基础第01天 1 - 编程语言 1.1 编程 1.2 计算机语言 1.3 编程语言 1.4 翻译器 1.5 编程语言和标记语言区别 总结 2 - 计算机基础 2.1 计算 ...

  9. 【Go】二、Go流程控制

    文章目录 Go流程控制 1.条件语句IF 2.条件语句switch 3.条件语句select 4.循环语句for 5.循环语句range 6.循环控制goto.break.... Go流程控制 1.条 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(二)寻找物体的凸包
  2. c语言xml序列化,C# XML和实体类之间相互转换(序列化和反序列化)
  3. #164 (Div. 2)
  4. SNMPM 配置 [linux windows solaris]
  5. thymeleaf的能用在什么地方_细品 Spring Boot+Thymeleaf,还有这么多好玩的细节!
  6. pyspark minHash LSH 查找相似度
  7. 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD
  8. 我在 SUN TECH DAY
  9. java实现8、10、16、2进制之间的相互转换(简单易懂实用快速)
  10. 14-CoreData兼容iOS9和iOS10
  11. ipv6寻址_什么是IPV4寻址?
  12. 60-150-044-使用-Sink-Flink自定义RetractStreamTableSink
  13. 动态创建表格(各种管理系统常见)
  14. JavaScript函数和对象
  15. java接口自动化框架_java接口自动化测试框架及断言详解
  16. php think run 后台运行问题
  17. 如何在手机上快速制作小一寸证件照
  18. ffmpeg解码器使用
  19. 和老外聊天、发邮件常用英语缩写(超实用)
  20. arm el2与el3_ARM下的EL/PL概念

热门文章

  1. Educational Codeforces Round 39 F Largest Beautiful Number
  2. 实现拷贝函数(strcpy)
  3. 掌握需求过程阅读笔记六
  4. 解决outlook不能显示鼠标问题
  5. 怎么设置android studio的field前缀
  6. python https 协议_Python中连接HTTPS网站如何强制使用TLSv1协议
  7. 设计灵感|电商版面首页界面设计案例
  8. 多看优秀的设计,时刻关注行业风向
  9. UI设计师必备的网站推荐
  10. 继承单例模式 php_解决 PhpStorm 对 用单例模式实例化PHP类时,代码自