async 珠峰培训node正式课笔记 【async】任务流程控制,异步流程控制
var async = require('async');
// series 串形任务
console.time('cost')
async.series({
two:function(callback){
setTimeout(function(){
console.log('串形任务two');
//第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务
callback(null,'串形任务two 执行完毕');
},)
},
one:function(callback){
setTimeout(function(){
console.log('串形任务one');
callback(null,'串形任务one 执行完毕');
},)
},
},function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
console.log(err,seriesRes);
console.timeEnd('cost')
})
//parallel 并行任务
// 传递给最终的回调函数的是按任务生命顺序排列,而不是完成顺序
console.time('cost_p')
async.parallel({
two:function(callback){
setTimeout(function(){
console.log('并行任务two');
//第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务
callback(null,'并行任务two 执行完毕');
},)
},
one:function(callback){
setTimeout(function(){
console.log('并行任务one');
callback(null,'并行任务one 执行完毕');
},)
},
},function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
console.log(err,seriesRes);
console.timeEnd('cost_p')
})
// waterfall 瀑布形任务
console.time('cost_w')
async.waterfall([
function(callback){
setTimeout(function(){
console.log('瀑布形任务 1');
//第一个参数 错误原因,当为真时,接收函数err参数接收到原因,并定为报错,停止执行后边的任务
callback(null,'咖啡');
},)
},
function(res,callback){
setTimeout(function(){
console.log('瀑布形任务 2');
callback(null,res+'+加糖');
},)
},
function(res,callback){
setTimeout(function(){
console.log('瀑布形任务 3');
callback(null,res+'+加牛奶');
},)
}
],function(err,seriesRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
console.log(err,seriesRes);
console.timeEnd('cost_w')
})
//auto 多情况组合任务
// 例:做饭任务
console.time('做饭任务cost:')
async.auto({
water:function(callback){
callback(null,'水')
},
flour:function(callback){
callback(null,'面粉')
},
mix:['water','flour',function(res,callback){
callback(null,res.water+"+"+res.flour+'+和面');
}],
stream:['mix',function(res,cb){
cb(null,res.mix+'+蒸馒头')
}]
},function(err,seriesRes){
console.log(err,seriesRes);
console.timeEnd('做饭任务cost:')
})
async.forEach
var fs = require('fs');
var async = require('async');
var arr = [{
filename:'1.txt',cont:''
},{
filename:'2.txt',cont:''
},{
filename:'3.txt',cont:''
}]
async.forEach(arr,function(item,cb){
},function(err,res){
console.log(err,res)
})
async.each/ async.eachSeries 用法一样
sync.each/ async.eachSeries each是并行,eachSeries是串行。。所以each的某个item抛出错误后其他的不影响,而eachSeries后面的就挂了。。
var pageNumArr = [,,,];
async.each(pageNumArr,function(offsetIndex,callback){
console.log(offsetIndex)
callback(null,'num:'+offsetIndex)
},function(errRes){//如果callback第一个参数为真,err接收到第一个参数,判为任务错误,终止后续任务
// console.log(err,seriesRes)
console.log(errRes)
})
async 珠峰培训node正式课笔记 【async】任务流程控制,异步流程控制的更多相关文章
- 珠峰培训node正式课--【笔记】|全局对象 | process | util | fs | stream 流
全局对象: console : __filename ; __dirname ; setTimeOut ; setImmediate(把参数函数放在下一个环节执行) proc ...
- node 进程管理 child_process [spawn,exec] | 珠峰培训node正式课 网络爬虫
run.js ; function set(){ i++ setTimeout(function(){ console.log(i) ){ set(); } },) }set(); child_pro ...
- 珠峰培训node 珠峰爬虫| cron 定时任务
1.cron 定时任务 CronJob var CronJob = require('cron').CronJob; // 秒 分钟 时 天
- Node.js学习笔记(2)——关于异步编程风格
Node.js的异步编程风格是它的一大特点,在代码中就是体现在回调中. 首先是代码的顺序执行: function heavyCompute(n, callback) { var count = 0, ...
- node核心:异步流程控制
Node.js的异步是整个学习Node.js过程中重中之重. 1)异步流程控制学习重点 2)Api写法:Error-first Callback 和 EventEmitter 3)中流砥柱:Promi ...
- 多线程编程学习笔记——async和await(一)
接上文 多线程编程学习笔记——任务并行库(一) 接上文 多线程编程学习笔记——任务并行库(二) 接上文 多线程编程学习笔记——任务并行库(三) 接上文 多线程编程学习笔记——任务并行库(四) 通过前面 ...
- 多线程编程学习笔记——async和await(二)
接上文 多线程编程学习笔记——async和await(一) 三. 对连续的异步任务使用await操作符 本示例学习如何阅读有多个await方法方法时,程序的实际流程是怎么样的,理解await的异步 ...
- 多线程编程学习笔记——async和await(三)
接上文 多线程编程学习笔记——async和await(一) 接上文 多线程编程学习笔记——async和await(二) 五. 处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...
- es6学习笔记-async函数
1 前情摘要 前段时间时间进行项目开发,需求安排不是很合理,导致一直高强度的加班工作,这一个月不是常说的996,简直是936,还好熬过来了.在此期间不是刚学会了es6的promise,在项目有用到pr ...
随机推荐
- POJ-最大连续子序列和
给定一个整数序列,找到一个具有最大和的连续子序列(子序列最少包含一个元素),返回其最大和. 实例输入: -2, 1, -3, 4, -1, 2, 1, -5, 4 实例输出: 6(连续子序列4, -1 ...
- 『2019 SummerCamp 总结』
做题 对于习题方面,我们感觉一个暑假还是留下了不少的题要写,大部分应该是讲师讲课的例题,还有少部分考试题.考试题没有订正完是因为还有算法不会,或是因为题太毒瘤了不会.同时,也发现自己还是有很多应该学的 ...
- Marshmallow详解
目录 Marshmallow详解 1. Scheme 2. Serializing(序列化) 3. 过滤输出 4. Deserializing(反序列化) 5. 处理多个对象的集合 6. Valida ...
- 【C#】58. .Net中的并发集合——BlockingCollection
https://blog.csdn.net/huiwuhuiwu/article/details/53608269 这篇是并发集合中的最后一篇,介绍一下BlockingCollection.在工作中我 ...
- 轨迹条(Trackbar)
1.创建 createTrackbar(轨迹条名称,窗口名称,滑动条的初始位置,滑动条的最大值,回调函数XXX,不懂) 其中回调函数为 void XXX(滑动条的位置,用户数据)在c++中函数名为指向 ...
- c#---Socean.RPC框架实测[并发量13w][响应时间0.04ms]
目录1.高性能RPC框架:Socean.RPC 前言 经过一段时间的优化,Socean.RPC的性能又提高了一些,不过这差不多是socketAPM模型的极限了.本框架仅仅2000多行代码,无第三方框架 ...
- 【转】socket通信-C#实现udp通讯
在日常碰到的项目中,有些场景下不适合使用tcp常连接,而需要靠UDP无连接的数据收发.那么如何使用SharpSocket完成UDP收发数据呢?其中要掌握的关键点是什么呢? 点击查看原博文内容
- intent 参数的规范
对于采用 intent 参数的 Activity Manager 命令,您可以使用以下选项指定 intent: -a action 指定 intent 操作,如“android.intent.acti ...
- springMVC执行流程及架构
目录 springMVC简单执行流程 springMVC框架 注解实现 springMVC简单执行流程 springMVC框架 执行流程: 1.用户发送请求至前端控制器DispatcherServle ...
- 谈谈游戏服务端SDK接入
“接sdk其实本质上就是一个对着接口文档写adaptor的工作,重复和无味.” 团队减员,身负多职,上一次调SDK已经可以回溯到游戏测试前夕了... 一般SDK只包含验证和支付功能,绝少部分SDK包含 ...