worker-qdeprecated

Queue jobs (in the form of functions) for async execution

Usage no npm install needed!

<script type="module">
  import workerQ from 'https://cdn.skypack.dev/worker-q';
</script>

README

worker q

Introduction

This is a Node.js based module for queuing asynchronous work.

Disclaimer: Please don't share WorkerQ objects across threads; actions are not designed to be thread safe!

Dependencies

None (it uses setTimeout() for async)

Examples

Do an npm install worker-q.

var WorkerQ = require("worker-q");

var waitThenCallback = function(wait, callback) {
  setTimeout(callback, wait, wait);
};

//1 is serial execution. 2+ is parallel. Experiment with different numbers
var activeJobsLimit = 2;
var myAwesomeQueue = new WorkerQ(activeJobsLimit);

var myAwesomeWork = [
  function(success, failure) {
    waitThenCallback(3000, success);
  }, function(success, failure) {
    waitThenCallback(2000, success);
  }, function(success, failure) {
    waitThenCallback(1000, success);
  }, function(success, failure) {
    failure("we wanted it to");
  }
];

myAwesomeQueue.jobSucceeds(function(wait) {
  console.log("waited " + wait + " ms");
  if (myAwesomeWork.length > 0) {
    myAwesomeQueue.add(myAwesomeWork.shift());
  }
});
myAwesomeQueue.jobFails(function(reason) {
  console.log("a job failed because " + reason);
});

//note that only 2 jobs are queued initially. If you increase the
// activeJobsLimit from 2, then add more jobs to the queue from the start
myAwesomeQueue.add(myAwesomeWork.shift());
myAwesomeQueue.add(myAwesomeWork.shift());
myAwesomeQueue.start();

License

Apache 2