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结果,怎么回事?你丫的有没有测试过啊? 大家一起写个项目, ...
随机推荐
- 从前端角度看ajax如何保护接口的安全性
一.前言 在web中,使用Ajax调用API,撇开跨域不讲,怎么做安全验证,防止别的网站调用呢?假设没有做安全保障,任何用户都可以直接访问接口,这回暴露出极大的安全隐患. 二.后端怎么做? 1.一些接 ...
- xshell与xftp使用注意
1.xshell报ssh服务器拒绝了密码,请再试一次 xshell登录使用的用户名不能是root,要是服务器的用户名,否则连接时会报 ssh服务器拒绝了密码,请再试一次.将root改成服务器用户名即可 ...
- MySQL储存过程
储存过程 本文章原创,转载需注明出处. 前提: 在大型数据库中 来源: 为了完成特定功能的SQL语句集 定义: 储存在数据库中, 用户通过指定储存过程的名字并给出参数(带有参数的)来执行它 声明: 储 ...
- nexus-3.2.0-01.zip安装以及如何启动服务
1. 在之前的版本中,启动nexus服务都是在cmd中输入 nexus install来安装服务,nexus start来启动服务. 2. 在nexus-3.2.0-01中,直接在nexus根目录下的 ...
- 如何在表单中使用Ajax
1.HTML就是一个简单表单验证,有登录按钮,点击登录会发送Ajax, 这里就是简单如果用户名为:zhouzhiruo,密码为:123456,就是登录成功,否则登录失败 应该在发送请求之前对input ...
- css 实用代码汇总
1.table 排版(防止td文字过多导致table变形) table { /*为表格设置合并边框模型*/ border-collapse: collapse; border-spacing: 0; ...
- Sql Server 向上取整、向下取整、四舍五入取整
==================================================== [四舍五入取整截取] select round(55.56,0) ============== ...
- .Net Core(完) 创建Docker镜像
使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器 ...
- Mac 的mysql5.7没有配置文件,如何解决only_full_group_by 问题
数据库版本是5.7.19,在写语句的时候,只要涉及ORDER BY,就会报错, ERROR 1055 (42000): Expression #7 of SELECT list is not in G ...
- JavaScript大杂烩17 - 性能优化
在上一节推荐实践中其实很多方面是与效率有关的,但那些都是语言层次的优化,这一节偏重学习大的方面的优化,比如JavaScript脚本的组织,加载,压缩等等. 当然在此之前,分析一下浏览器的特征还是很有意 ...