queue-fun基于Promise的nodejs队列控制模块
queue-fun 是基于Promise的 运行队列控制类。
使用场景
-
巨量同逻辑业务平稳处理
-
间歇性高并发系统
-
控制单用户占用资源过高
队列
queue-fun.Queue(q)
初始化队类 参数q可传
-
无参数 队列使用内置的实现的Promise;
-
q/ES6原生Promise 插入队列方法:
push
unshift
go
jump
返回对应的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)} })
评论