Simple promise-based function queue
Cool way to enqueue rate-limited operations.
$ npm install --save queue-up
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}`));
}
Creates new instance of Queue.
Type: number
Default: 1000
Time in ms
from when previous function resolves to when next is invoked.
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)
Alias: queue.enqueue(fn)
Returns a promise
that resolves to what fn()
would resolve, but in the right time.
Type: function
Required
A function
to be enqueued. Doesn't necessarily need to return a promise
.
Enqueues several function and returns a promise
that resolves to an array
of all results.
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)
MIT © Dmitriy Sobolev