promise-series-advanced

1.1.2 • Public • Published

Promise Series Advanced

This promise-series-advanced modules allows you to execute a series of methods consecutively, and retrieve the results.
Each method :
- may be a promise or not.
- can be called with specific parameters

Results as an array

var p = new PromiseSeries();  
p.add(logMessage, 'world');  
p.add(sleep, 1000);  
p.add(logMessage, 'again');  
p.add(sleep, 2000);  
p.add(logMessage, 'again and again');
 
p.start()  
    .then(results => {  
        console.log(results);  
    })  
    .catch(error => {  
        console.log(error);  
    });   
  
function logMessage(text) {  
    var message = 'hello ' + text;  
    console.log(message);  
    return message;  
}  
  
function sleep(duration) {  
    var defer = Promise.defer();  
    setTimeout(() => {  
        console.log('sleep ' + duration)  
        defer.resolve(`I slept for ${duration}ms`);  
    }, duration);  
  
    return defer.promise;  
}  
  

This will print:

[ 'hello world',  
  'I slept for 1000ms',  
  'hello again',  
  'I slept for 2000ms',  
  'hello again and again' ]  

Results as an object

To do so, each method must have an alias:

var p = new PromiseSeries();  
p.add(getName).as('name');  
p.add(getDescription).as('description');  
p.add(getPrice, '$').as('price');  
p.add(getLocation).as('location');  
p.start()  
    .then(results => {  
        console.log(results);  
    })  
    .catch(error => {  
        console.log(error);  
    });  
  
function getName() {  
    console.log('getName');  
    return 'Canon eos 70d';  
}  
  
function getDescription() {  
    console.log('getDescription');  
    var defer = Promise.defer();  
    setTimeout(() => {  
        console.log(`This is a camera`);  
        defer.resolve(`This is a camera`);  
    }, 1000);  
  
    return defer.promise;  
}  
  
function getPrice(currency) {  
    console.log('getPrice');  
    var defer = Promise.defer();  
    setTimeout(() => {  
        console.log(`589${currency}`);  
        defer.resolve(`589${currency}`);  
    }, 1000);  
  
    return defer.promise;  
}  
  
function getLocation() {  
    console.log('getLocation');  
    var defer = Promise.defer();  
    setTimeout(() => {  
        console.log(`UK`)  
        defer.resolve(`UK`);  
    }, 1000);  
  
    return defer.promise;  
}  
  

This will print:

{ name: 'Canon eos 70d',  
  description: 'This is a camera',  
  price: '589$',  
  location: 'UK' }  

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.2
    3
    • latest

Version History

Package Sidebar

Install

npm i promise-series-advanced

Weekly Downloads

2

Version

1.1.2

License

MIT

Last publish

Collaborators

  • pierreraffa