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结果,怎么回事?你丫的有没有测试过啊? 大家一起写个项目, ...
随机推荐
- 学习实践之DEMO《nodejs模拟POST登陆》
一个简单的PHP接收参数页面 <?php header("content-type:text/html;charset=utf-8"); if($_POST[username ...
- c# 导出表格
var record = m_editor.getMasterRecord(); var Check_Id = record.Check_Id; var url = "/Storage/St ...
- Ajax提交用FormData()上传文件
1.form声明如下 2.ajax设置如下 var formData = new FormData(document.getElementById("form")); $.ajax ...
- python 百度cpc点击
# coding=utf8 import urllib2 import string import urllib import re import random #设置多个user_agents,防止 ...
- 初学HTML-7
表单中的一些标签 label标签:让文字和输入框进行绑定,即,点击文字,输入框可以开始输入(默认文字和输入框没有关系,不会聚焦) 格式:<form action=""> ...
- socket、web socket
WEB SOCKET: 说明:为浏览器提供双工异步通信,浏览器可以向服务端发送消息.服务端也可以向浏览器发送消息. SOCKET: 说明:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接 ...
- html中用href 实现点击链接弹出文件下载对话框
浏览器支持能够打开的格式,他都会默认直接在线打开(比如word或图片),不支持的格式,他就会弹出下载提示.最好是做成.rar格式.xlsx的文件.浏览器自带下载功能. <body> < ...
- 二层协议--MPLS协议总结
1.MPLS是介于2层和3层之间的协议,主要应用在城域网中,作为集客专线.基站等承载VPN技术的关键技术. 2.MPLS利用MPLS标签进行转发,先通过IP单播路由的方式沿途分配好MPLS标签,分配完 ...
- 安卓开发_浅谈WebView(转)
,有一个功能需要在APP中调用网站 百度了一下,发现需要用WebView来实现 实现方法很容易,我就不在这里写一遍了 ,直接转一下我学习的内容吧 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- 创建Android Apps的30个经验教训
这个世界上有两种人-从经验教训中学习的人以及听从别人建议的人.这里是我一路走来学到的一些东西,分享给大家: 在添加任何第三方party之前,请三思:这真的是一个成熟的项目吗? 如果一个东西用户看不到, ...