queue-up

2.1.0 • Public • Published

queue-up Build Status

Simple promise-based function queue

Cool way to enqueue rate-limited operations.

Install

$ npm install --save queue-up

Usage

const ghGot = require('gh-got');
const Queue = require('queue-up');
 
// GitHub API allows us to make 5000 requests per hour:
 
const queue = new Queue(60 * 60 * 1000 / 5000);
 
const usernames = [
    'dsblv',
    'strikeentco',
    'sindresorhus',
    'octocat'
];
 
const opts = {
    token: 'the-private-token'
};
 
for (let username of usernames) {
    queue.up(() => ghGot(`users/${username}`, opts))
        .then(data => data.body)
        .then(user => console.log(`${user.name} is in ${user.location}`));
}

API

new Queue([interval, initialValue])

Creates new instance of Queue.

interval

Type: number
Default: 1000

Time in ms from when previous function resolves to when next is invoked.

initialValue

Type: any
Default: undefined

Every function in a queue gets result of the previous one as an argument. If you specify initialValue, it will be fed to the first function:

function double(value) {
    return value * 2;
}
 
const queue = new Queue(100, 1337);
 
queue.up(double).then(console.log);
//=> 2674
 
queue.up(double).then(console.log);
//=> 5348 (after 100ms)

queue.up(fn)

Alias: queue.enqueue(fn)

Returns a promise that resolves to what fn() would resolve, but in the right time.

fn

Type: function
Required

A function to be enqueued. Doesn't necessarily need to return a promise.

queue.all(fns)

Enqueues several function and returns a promise that resolves to an array of all results.

fns

Type: iterable (e.g. array)
Required

An iterable object of functions to be enqueued.

function double(value) {
    return value * 2;
}
 
const queue = new Queue(100, 1337);
 
queue.all([double, double]).then(console.log);
//=> [2674, 5348] (after 100ms)

License

MIT © Dmitriy Sobolev

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.1.0
    0
    • latest

Version History

Package Sidebar

Install

npm i queue-up

Weekly Downloads

0

Version

2.1.0

License

MIT

Last publish

Collaborators

  • dsblv