Over a million developers have joined DZone.

Javascript — Promise Chain Explained With Code Samples

This article represents tips and code samples on How to create and use a Promise Chain objects in Javascript.

· Web Dev Zone

Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

The following diagram represents the interaction between signup, Auth, and User modules.

Promise Chain Example

Pay attention to some of the following in the above diagram:

  • Signup module invokes login API on Auth service which returns a Promise object. The Signup completes the sync operation and watches for the Promise returned by Auth service to be resolved.
  • // Import the Auth module
    //
    var Auth = require('./Auth');
    
    // Create an Auth object
    //
    var auth = new Auth();
    //
    // Calls login API on Auth object
    // Returns a promise object
    //
    var loginPromise = auth.login({username:'ashukla', password:'pass123'});
    //
    // Once the state of Promise is fulfilled/resolved or rejected,
    // following is executed
    //
    loginPromise.then(function(response){
        console.log("User name: " + response.firstname);
        console.log("Completed async operation...");
    }, function(error) {
        console.log(error.message);
    });
    console.log("Completed sync operation...");
  • The Login API in turn invokes Get API on User object as a part of resolution. The Get API returns a Promise object.
  • // Promise needs to be imported when executing a module using Node
    //
    var Promise = require("promise");
    var User = require("./User");
    var userService;
    
    function Auth() {
        userService = new User();
    }
    
    Auth.prototype.login = function(user) {
        return new Promise(function(resolve, reject) {
            if(user.username != "" && user.password != "") {
                resolve(userService.get(user));
            } else {
                if(user.username == ""){
                    reject({status:1, message: "Username is invalid"});
                } else {
                    reject({status:2, message: "Password is invalid"});
                }
            }
        });
    }
    module.exports = Auth;
  • Once the Get API is resolved, the User object is sent as part of "resolve" within Get API. This User object is in turn sent back to Signup module as part of "resolve" invoked within Auth Login API.
  • // Promise needs to be imported when executing a module using Node
    //
    var Promise = require("promise");
    
    function User() {
    }
    
    User.prototype.get = function(user) {
        return new Promise(function(resolve, reject) {
            setTimeout(function() {
                resolve({username: user.username,
                            firstname: 'Ajitesh',
                            lastname: 'Shukla',
                            age: 40,
                            location: 'Hyderabad',
                            twitter: 'vitalflux',
                            url: 'http://www.vitalflux.com'});
            }, 5000);
        });
    };
    
    module.exports = User;

Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.

Topics:
promises in javascript ,javascript ,promises

Published at DZone with permission of Ajitesh Kumar, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}