taskManager.js 902 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. var sequeue = require('seq-queue');
  2. var manager = module.exports;
  3. var queues = {};
  4. manager.timeout = 3000;
  5. /**
  6. * Add tasks into task group. Create the task group if it dose not exist.
  7. *
  8. * @param {String} key task key
  9. * @param {Function} fn task callback
  10. * @param {Function} ontimeout task timeout callback
  11. * @param {Number} timeout timeout for task
  12. */
  13. manager.addTask = function(key, fn, ontimeout, timeout) {
  14. var queue = queues[key];
  15. if(!queue) {
  16. queue = sequeue.createQueue(manager.timeout);
  17. queues[key] = queue;
  18. }
  19. return queue.push(fn, ontimeout, timeout);
  20. };
  21. /**
  22. * Destroy task group
  23. *
  24. * @param {String} key task key
  25. * @param {Boolean} force whether close task group directly
  26. */
  27. manager.closeQueue = function(key, force) {
  28. if(!queues[key]) {
  29. // ignore illeagle key
  30. return;
  31. }
  32. queues[key].close(force);
  33. delete queues[key];
  34. };