npm-async使用
async.series(tasks, callback)
tasks
可以是对象或数组,返回类型就是参数类型tasks
中传入回调函数的第一个值非空即停止后面函数执行- 按照顺序流程进行
async.series({
one: function (cb) {
cb(null, 'one')
},
two: function (cb) {
cb(null, 'two')
}
}, function (err, results) {
console.log(results);
})
async.waterfall(tasks, callback)
- 与
async.series
类型 tasks
中可以将结果向后传递tasks
参数仅可以为数组
async.waterfall([function(cb) {
cb(null, 'one')
}, function (data, cb) {
cb(null, data + ' two')
}], function (err, results) {
console.log(results);
})
async.parallel(tasks, callback)
tasks
参数可以是数组或对象tasks
函数全部并行执行- 注意最终结果参数还是按照
tasks
中声明的顺序
async.parallelLimit(tasks, limit, callback)
- 与
async.parallel
相同 limit
参数限制最大并发数量
async.queue(work, concurrency)
- 队列流程控制,加强版
paralle()
- 队列消息,限制
work
数量 - 参数
work
是执行任务的回调函数形式,concurrency
定义同时执行任务的数量
var async = require('async')
var count = 0;
var queue = async.queue(function (task, cb) {
console.log('work is processing task: ', task.name);
cb();
}, 2)
queue.push({name: 'one'}, function (err) {
setTimeout(function () {
console.log('finished processing foo');
}, 2000)
})
queue.push({name: 'two'}, function (err) {
setTimeout(function () {
console.log('finished processing two');
}, 1000)
})
queue.push({name: 'three'}, function (err) {
console.log('finished processing three');
})
queue.push({name: 'four'}, function (err) {
console.log('finished processing four');
})
//党最后一个任务交给work时调用,所以这里在name:four执行前调用
queue.empty = function () {
console.log('no more tasks wating');
}
//执行完所有任务后调用
queue.drain = function () {
console.log('all tasks have been processed');
}
async.whilst(test, fn, callback)
- 流程控制,相当于
while
- 适合以循环的方式执行异步操作
async.whilst(function () {
return count < 5
}, function (cb) {
count++;
setTimeout(function () {
cb(null, count)
}, 1000)
}, function (err, data) {
console.log(data);
})
async.doWhilst(fn, test, callback)
- 与
async.whilst
类似, 相当于do...while
语句
async.until(test, fn, callback)
async.whilst
判断条件相反
async.doUntil(fn, test, callback)
async.doWhilst
判断条件相反
npm-async使用的更多相关文章
- Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
Elasticseach目前作为查询搜索平台,的确非常实用方便.我们今天在这里要讨论的是如何做数据备份和type删除.我的ES的版本是2.4.1. ES的备份,可不像MySQL的mysqldump这么 ...
- promise基础和进阶
本文不对Promise的做过深的解析,只对基础的使用方法,然后会记录一些promise的使用技巧,可以巧妙的解决异步的常见问题. 在过去一直理解的是解决了一直异步回调的坑,但是用了npm async之 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 小程序如何支持使用 async/await (构建npm版)
前言 小程序本身是不支持async/await语法的,但有些应用场景,我们使用async/await会使得代码更简洁,也更易于维护,用过都知道是有多爽的.既然小程序不支持,那我们可以借助 fackbo ...
- npm 初学者教程
Node.js 让 JavaScript 编写服务器端应用程序成为可能.它建立在 JavaScript V8(C++ 编写的) 运行时之上,所以它很快.最初,它旨在为应用程序提供服务器环境,但是开发人 ...
- [译]A Beginner’s Guide to npm — the Node Package Manager
原文: http://www.sitepoint.com/beginners-guide-node-package-manager/ Installing Node.js 验证你的安装是否成功. $ ...
- npm报错Error: ENOENT, stat 'D:\NodeLearn\node-global'
最近想试下当前的当红炸子鸡 Nodejs,在安装配置时,发生了下面的错误: C:\nodejs\npmjs\bin>cd .. C:\nodejs\npmjs>cd .. C:\nodej ...
- NodeJS包管理工具——npm入门
如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,Java的Maven……当然还有Node.js的npm.有的人会奇怪为何要引入又一个新东西来让我 ...
- [转] Understanding JavaScript’s async await
PS:Promise的用处是异步调用,这个对象使用的时候,call then函数,传一个处理函数进去,处理异步调用后的结果 Promise<Action>这样的对象呢,异步调用后的结果是一 ...
- [转] npm命令概述
PS:问题,nvm找不到正确的下载server NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist nvm ls-remote NVM_NODEJS_ORG_MI ...
随机推荐
- document.compatMode属性
document.compatMode用来判断当前浏览器采用的渲染方式. 官方解释: BackCompat:标准兼容模式关闭.CSS1Compat:标准兼容模式开启. 当document.compat ...
- SQL语句生成指定范围内随机数
1.生成随机实型数据 create procedure awf_RandDouble @min dec(14,2), @max dec(14,2), @result dec(14,2) output ...
- NSTimer
NSTimer叫做“定时器”,它的作用如下 在指定的时间执行指定的任务 每隔一段时间执行指定的任务 调用下面的方法就会开启一个定时任务 + (NSTimer *)scheduledTimerWithT ...
- C语言位域
转载自 http://tonybai.com/2013/05/21/talk-about-bitfield-in-c-again/ 再谈C语言位域 五 21 bigwhite技术志 bitfield, ...
- PHP中常见错误
1.Notice: Undefined variable: 变量名 in 注:使用了一个没有被定义的变量 2.Parse error: syntax error, unexpected T_ELSE ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- neurosolutions 人工神经网络集成开发环境 keras
人工神经网络集成开发环境 : http://www.neurosolutions.com/ keras: https://github.com/fchollet/keras 文档 http ...
- IntelliJ IDEA WEB项目的部署配置
以下内容是我网上找的比较全面了,其中关于facets配置很多地方都没有说明,其实很重要,我加入了自己的理解.其他来自网络.在导入一个项目有问题时,建议先创建一个正确的web项目,然后对比配置项,一般就 ...
- MVC 导出Excel 的其中一方法(View导出excel)
场景:mvc下导出excel 思路:使用View导出excel 步骤: 1.导出标签添加事件 $("#export_A").click(function(){ //省略代码.... ...
- Ansible Ubuntu 安装部署
一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...