Skip to content

Put your callbacks into queue to make sure that concurrent requests that you might want to perform will only be executed once

License

Notifications You must be signed in to change notification settings

microfleet/callback-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a425172 · Jan 19, 2025

History

18 Commits
Jan 19, 2025
Jan 19, 2025
Jan 19, 2025
Jan 19, 2025
Jan 19, 2025
Feb 18, 2016
Apr 14, 2021
Jan 19, 2025
Jan 19, 2025
Apr 14, 2021
Apr 14, 2021
Aug 3, 2016
Jan 19, 2025
Jan 19, 2025
Jan 19, 2025
Apr 14, 2021
Apr 14, 2021

Repository files navigation

Callback queue

Codacy Badge

Node.js callback queue. Can be used with browserify as well.

Idea is to queue callbacks, when same function wants to be called at the same time by different callers.

One example would be conserving resources spent on outgoing http requests.

npm install callback-queue -S

Example usage

  1. callbackQueue.add(String, Function): queues callbacks based on key attribute
  2. callbackQueue.remove(String, Error): calls queued callbacks with Error argument
const callbackQueue = require('callback-queue');
const request = require('request');

function performOutgoingRequest(url, next) {
  const callback = callbackQueue.add(url, next);
  if (!callback) {
    return;
  }

  request(url, callback);
}

for (let i = 0; i < 100; i++) {
  // request itself will be performed just once
  performOutgoingRequest('https://google.com', function niceCallback(err, resp, body) {
    // will be called 100 times
  });
}

for (let x = 0; x < 100; x++) {
  // request itself will be performed just once
  performOutgoingRequest('https://google.com', function niceCallback(err, resp, body) {
      // will be called 100 times with Error object
  });
}

callbackQueue.remove('https://google.com', new Error('cancel it!'));

About

Put your callbacks into queue to make sure that concurrent requests that you might want to perform will only be executed once

Resources

License

Stars

Watchers

Forks

Packages

No packages published