SeqProm
Repo for Sequential Promises project
Installation
npm install seq-prom --save
Options
Option |
Type |
Description |
Default |
Required? |
list |
Array |
List of items to iterate through |
|
Yes |
cb |
Function |
Function called when time to process next item |
|
Yes |
batchSize |
Integer |
Size of the batch, or if using stream mode, how many streams to use |
1 |
No |
errorCB |
Function |
Called when there is an error, with the item and reason for error |
|
No |
finalCB |
Function |
Called when all is done. Passes in a list of errors, and any items, passed to the resolve method |
|
No |
useStream |
Boolean |
Will switch to stream mode, which meaning multiple queues are created with the list |
false |
No |
autoStart |
Boolean |
Instead of having to call .start() will do this for you |
false |
No |
Usage
Basic Example
const SeqProm = require("seq-prom");
let seqProm = SeqProm({
list: [1, 2, 3],
cb (item, resolve, reject) {
console.log(`Item [${item}] called!`);
setTimeout(function () {
if (item === 3) {
return reject("Not sure about this!");
} else {
return resolve();
}
}, item * 1000);
},
errorCB (item, reason) {
console.error(`Item [${item}] failed with error: ${reason}`);
},
finalCB (){
console.log("All done!");
}
});
seqProm.start();
Other Options
const SeqProm = require("seq-prom");
SeqProm({
list: [1, 2, 3, 4],
autoStart: true,
useStream : true,
batchSize : 2,
cb (item, resolve, reject) {
console.log(`Item [${item}] called!`);
setTimeout(function () {
if (item === 3) {
return reject("Not sure about this!");
} else {
return resolve(item);
}
}, item * 1000);
},
errorCB (item, reason) {
console.error(`Item [${item}] failed with error: ${reason}`);
},
finalCB (errors, responses){
console.log("All done!");
console.dir(errors);
console.dir(responses);
}
})
.promise
.then(function(){
console.log("Called after all is said and done");
});
Functions
cb
Argument |
Description |
item |
Item from the list |
resolver |
The resolve function from the promise |
rejecter |
The reject function from the promise |
self |
this passed through. Can call .stop() on this |
threadId |
If in stream mode, then this will be the threadId |
errorCB
Argument |
Description |
item |
Item from the list |
reason |
Reason for the error, either from the reject method or a caught error |
finalCB
Argument |
Description |
error |
List of errors that have occured |
response |
List of items passed back to the resolve function |
Promise Response
const SeqProm = require("seq-prom");
SeqProm({
list: [1, 2, 3],
autoStart : true,
cb (item, resolve, reject) {
console.log(`Item [${item}] called!`);
setTimeout(function () {
if (item === 3) {
return reject("Not sure about this!");
} else {
return resolve(item);
}
}, item * 1000);
},
errorCB (item, reason) {
console.error(`Item [${item}] failed with error: ${reason}`);
},
finalCB (errors, response){
console.log("All done!");
}
})
.promise
.then(([errors, responses])=> console.log(errors, responses));
Tests
npm test
Release History
- 1.1.1 Package update
- 1.1.0
- Updates to allow passage of data
- Added more tests
- Added autStart option
- Added ability to chain off of promise
- 1.0.0 Initial release