基于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

艾伦•图灵传

艾伦•图灵传

(英)安德鲁·霍奇斯 / 孙天齐 / 湖南科学技术出版社 / 2012-8-1 / 68.00元

《艾伦·图灵传:如谜的解谜者》是图灵诞辰100周年纪念版,印制工艺更为精美。本书是世界共认的最权威的图灵传记。艾伦?图灵是现代人工智能的鼻祖,在24岁时奠定了计算机的理论基础。二战期间,他为盟军破译密码,为结束战争做出巨大贡献。战后,他开创性地提出人工智能的概念,并做了大量的前期工作。因同性恋问题事发,被迫注射激素,后来吃毒苹果而死。作者是一名数学家,也是一名同性恋者。他对图灵的生平有切身的体会,......一起来看看 《艾伦•图灵传》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换