2.1.0 • Published 9 years ago
delay-promise v2.1.0
Delay promise
A ES6 promise wrapper library to throttle and batch promises
const delayed = require('delay-promise');
// A sample promise which takes an argument
function promise(name) {
console.log('Begin task', name);
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('Finish task', name);
return resolve();
}, 1000);
});
};delayed.creator creates a wrapper function the promise which allows the delaying of the promise execution
const promiseCreator = delayed.creator(promise, 'promise param');Both delayed.series and delayed.parallel accepts an array of delayed.creator objects
Sequentially execute an array of delayed creators with the delay of 1 second between each promise
delayed.series([
delayed.creator(promise, 'Series A'),
delayed.creator(promise, 'Series B'),
delayed.creator(promise, 'Series C')
], 1000).then((promisesArray) => {
// returns an array of resolved values of the promises just like Promise.all
});To produce a throttled or staggered effect use delayed.parallel
Parallelly execute an array of delayed creators with the delay of 1 second between each promise
delayed.parallel([
delayed.creator(promise, 'Parallel A'),
delayed.creator(promise, 'Parallel B'),
delayed.creator(promise, 'Parallel C')
], 1000).then((promisesArray) => {
// returns an array of resolved values of the promises just like Promise.all
});Use both parallel and series for throttling and batching
const batch1 = delayed.creator(delayed.parallel, [
delayed.creator(promise, 'batch task1'),
delayed.creator(promise, 'batch task2'),
delayed.creator(promise, 'batch task3')
], 1000); // 1 second delay between each parallel promise
const batch2 = delayed.creator(delayed.parallel, [
delayed.creator(promise, 'batch task4'),
delayed.creator(promise, 'batch task5'),
delayed.creator(promise, 'batch task6')
], 1000); // 1 second delay between each parallel promise
// 1 second delay between each batch
delayed.series([ batch1, batch2 ], 1000).then((batchArray) => {
// Array of batches
});