nodejs中async使用
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使用的更多相关文章
- (四)、 nodejs中Async详解之一:流程控制
为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...
- nodejs中Async详解之一:流程控制
为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...
- Nodejs中Async模块的流程控制方法
首先,使用Asycn模块需要安装,它不是node自带的.其次,该模块有大约20多个流程控制方法,我们在这里仅分析常用的series, parallel, waterfall, auto这四种,并且尽量 ...
- 在Nodejs中如何调用C#的代码
最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互, 直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后 ...
- 如何优雅的处理Nodejs中的异步回调
前言 Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用.在Nodejs中大部分的I/O操作几乎都是异步的,也就是我们处理I/O ...
- nodejs中异步
nodejs中的异步 1 nodejs 中的异步存在吗? 现在有点 javascript 基础的人都在听说过 nodejs ,而只要与 javascript 打交到人都会用或者是将要使用 nodejs ...
- nodejs中http-proxy使用小结
最近在写xmocker的工具,用于开发前期的mock数据,不可避免的用到了代理的中间件.当然,github上有关于http-proxy封装的中间件.毕竟是自己练手的项目,就自己写了个中间件,方便定制功 ...
- NodeJs使用async让代码按顺序串行执行
描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...
- 在Nodejs中贯彻单元测试
在团队合作中,你写好了一个函数,供队友使用,跑去跟你的队友说,你传个A值进去,他就会返回B结果了.过了一会,你队友跑过来说,我传个A值却返回C结果,怎么回事?你丫的有没有测试过啊? 大家一起写个项目, ...
随机推荐
- [转]nodejs之cordova 跨平台开发
本文转自:https://blog.csdn.net/bubuxindong/article/details/53787392 cordova原名phonegap,虽然adobe收购了phonegap ...
- c# txt代码转换成HTML格式
/// <summary> /// 字符串字符处理 /// </summary> /// <param name="chr">等待处理的字符串& ...
- Docker常用命令(二)
Docker常用命令 查看Docker所有正在运行的容器 docker ps 查看Docker已退出的容器 docker ps -a 查看Docker所有镜像 docker images 删除镜像 删 ...
- mongodb 权限设置--用户名、密码、端口
转自:http://www.cnblogs.com/valor-xh/p/6369432.html 一.关于权限的默认配置 在默认情况下,mongod是监听在0.0.0.0之上的,任何客户端都可以直接 ...
- vue自制switch滑块
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)
MySQL: use sakila; -- show fields from table_name; -- show keys from table_name; SELECT `REFERENCED_ ...
- MySQL安装的挫折之路
由于对MySQL卸载的不干净,mysql 的MySQL Connector Net/xxx无法卸载,后期重装无法成功.所以只能采用zip 安装https://www.cnblogs.com/Micha ...
- 【面试】Python面试题库
https://blog.csdn.net/ChenVast/article/details/81451460 第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Py ...
- python自动化开发-5a
python的常用模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包 ...
- 安卓开发之ScrollView
当界面不足以将所有的内容显示出来的时候便导致下面的部分内容无法显示出来 所有加上ScrollView 来讲要显示的内容放入之中便可以实现上下滚动界面内容 但是当要显示多个控件的时候会出错 原因是Sc ...