@sex-pomelo/sex-pomelo
Version:
[![NPM version][npm-image-pomelo]][npm-url-pomelo] [![NPM version][npm-image-down]][npm-url-pomelo]
44 lines (35 loc) • 973 B
JavaScript
;
const sequeue = require('../../util/seq-queue');
let manager = module.exports;
let queues = {};
manager.timeout = 3000;
/**
* Add tasks into task group. Create the task group if it dose not exist.
*
* @param {String} key task key
* @param {Function} fn task callback
* @param {Function} ontimeout task timeout callback
* @param {Number} timeout timeout for task
*/
manager.addTask = function(key, fn, ontimeout, timeout) {
let queue = queues[key];
if(!queue) {
queue = sequeue.createQueue(manager.timeout);
queues[key] = queue;
}
return queue.push(fn, ontimeout, timeout);
};
/**
* Destroy task group
*
* @param {String} key task key
* @param {Boolean} force whether close task group directly
*/
manager.closeQueue = function(key, force) {
if(!queues[key]) {
// ignore illeagle key
return;
}
queues[key].close(force);
delete queues[key];
};