Skip to content

ngerritsen/sync-task-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipeline Status

Sync Task Queue

Makes sure async tasks are executed in sequence.

  • 🎂 No dependencies!
  • 💎 0.8kB minified!
  • 🦄 Compatible with Node >= 6 and all browsers that support Promises

Usage

const createTaskQueue = require('sync-task-queue');

const taskQueue = createTaskQueue();

function taskA() {
  console.log('Starting HTTP request A');

  return doHttpRequest('/a');
}

function taskB() {
  console.log('Starting HTTP request B');

  return doHttpRequest('/b');
}

taskQueue.enqueue(taskA)
  .then(() => console.log('Done with HTTP request A'));

taskQueue.enqueue(taskB)
  .then(() => console.log('Done with HTTP request B'));

/**
 * Output:
 *
 * Starting HTTP request A
 * Done with HTTP request A
 * Starting HTTP request B
 * Done with HTTP request B
 */

The task queue will make sure taskB does not start after taskA has finished.

Note that for tasks to be run in sequence, they MUST use the same instance of the taskQueue. This means you can create multiple taskQueue's for different parts of your application to still run in parallel.

You can pass in arguments to the task by passing them as an array:

taskQueue.enqueue(taskA, ['x', 1]);

Our you can just use a callback:

taskQueue.enqueue(() => taskA('x', 1));

Enqueue will return a promise that will resolve (or reject with) the result of the task.

taskQueue
  .enqueue(() => doHttpRequest('/a'))
  .then(result => console.log(result)); // Will log the result of the HTTP request.
  .catch(error => console.error(error)); // Will log an error that occurred in the HTTP request.

The task queue will continue to execute the next tasks if one task rejects.

About

A sync task queue using promises

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published