queue-fu是基于Promise的运行队列控制类。
使用场景
巨量同逻辑业务平稳处理
间歇性高并发系统
控制单用户占用资源过高
队列
queue-fu.Queue(q)
初始化队类参数q可传
无参数队列使用内置的实现的Promise;
q/ES6原生Promise插入队列方法:pushushiftgojump返回对应的promise
实例化队列ewqueue-fu.Queue()(ruMax,co)
ruMax并行运行队列方法的最大个数
co配置队列开始结束事件,运行单元的成功,失败事件及配置执行单元出错的重试机制。
示例代码:
var queuefu = require('queue-fu'); //引入//初始化Promise异步队列类var Queue = queuefu.Queue(); //实列化最大并发为2的运行队列var queue1 = ew Queue(2,{ "evet_succ":fuctio(data){cosole.log('queue-succ:',data)} //成功 ,"evet_err":fuctio(err){cosole.log('queue-succ:',data)} //失败}); var q = queuefu.Q; //模块中简单实现了Q的基本功能,可以一试,//定义一个Promise风格的异步方法fuctio testfu(i){ var deferred = q.defer(); setTimeout(fuctio(){ if(i\ && i % 3 == 0){ deferred.reject(ew Error("err " + i)) }else{ deferred.resolve(i) } },(Math.radom() * 2000)>>0) retur deferred.promise;}//向队列添加运行单元queue1.push(testfu,[1]) //添加运行项queue1.go(testfu,[2]) //添加并自动启动队列queue1.go(testfu,[3],{Queue_evet:0}) //添加不会触发队列 回调的运行项.queue1.go(testfu,[4]).the( fuctio(data){cosole.log('doe-succ:',data)}, fuctio(err){cosole.log('doe-err:',err)})queue1.go(testfu,[5],{ evet_succ:fuctio(data){cosole.log('cof-succ:',data)}, evet_err:fuctio(err){cosole.log('cof-err:',err)}})
评论