基于Promise的nodejs队列控制模块 queue-fun
- 授权协议: BSD
- 开发语言: JavaScript
- 操作系统: 跨平台
- 软件首页: https://github.com/cnwhy/queue-fun
- 软件文档: https://github.com/cnwhy/queue-fun
软件介绍
queue-fun 是基于Promise的 运行队列控制类。
使用场景
巨量同逻辑业务平稳处理
间歇性高并发系统
控制单用户占用资源过高
队列
queue-fun.Queue(q)
初始化队类 参数q可传
无参数 队列使用内置的实现的Promise;
q/ES6原生Promise 插入队列方法:
pushunshiftgojump返回对应的promise
实例化队列 new queue-fun.Queue()(runMax, con)
runMax 并行运行队列方法的最大个数
con 配置队列 开始 结束 事件,运行单元的 成功,失败 事件及配置执行单元出错的 重试 机制。
示例代码:
var queuefun = require('queue-fun'); //引入
//初始化Promise异步队列类
var Queue = queuefun.Queue();
//实列化最大并发为2的运行队列
var queue1 = new Queue(2,{
"event_succ":function(data){console.log('queue-succ:',data)} //成功
,"event_err":function(err){console.log('queue-succ:',data)} //失败
});
var q = queuefun.Q; //模块中简单实现了Q的基本功能,可以一试,
//定义一个Promise风格的异步方法
function testfun(i){
var deferred = q.defer();
setTimeout(function(){
if(i\ && i % 3 == 0){
deferred.reject(new Error("err " + i))
}else{
deferred.resolve(i)
}
},(Math.random() * 2000)>>0)
return deferred.promise;
}
//向队列添加运行单元
queue1.push(testfun,[1]) //添加运行项
queue1.go(testfun,[2]) //添加并自动启动队列
queue1.go(testfun,[3],{Queue_event:0}) //添加不会触发队列 回调的运行项.
queue1.go(testfun,[4]).then(
function(data){console.log('done-succ:',data)},
function(err){console.log('done-err:',err)}
)
queue1.go(testfun,[5],{
event_succ:function(data){console.log('conf-succ:',data)},
event_err:function(err){console.log('conf-err:',err)}
})
算法(英文版•第4版)
[美] Robert Sedgewick、[美] Kevin Wayne / 人民邮电出版社 / 2016-3 / 129.00元
本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4 版具体给出了每位程序员应知应会的50 个算法,提供了实际代码,而且这些Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。一起来看看 《算法(英文版•第4版)》 这本书的介绍吧!
