基于Promise的nodejs队列控制模块 queue-fun

码农软件 · 软件分类 · Node.js 扩展 · 2019-04-14 14:41:58

软件介绍

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)}
})

本文地址:https://codercto.com/soft/d/3567.html

Defensive Design for the Web

Defensive Design for the Web

37signals、Matthew Linderman、Jason Fried / New Riders / 2004-3-2 / GBP 18.99

Let's admit it: Things will go wrong online. No matter how carefully you design a site, no matter how much testing you do, customers still encounter problems. So how do you handle these inevitable bre......一起来看看 《Defensive Design for the Web》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具