Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Javascript — Promise Chain Explained With Code Samples

DZone's Guide to

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 ·
Free Resource

Learn how error monitoring with Sentry closes the gap between the product team and your customers. With Sentry, you can focus on what you do best: building and scaling software that makes your users’ lives better.

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;

What’s the best way to boost the efficiency of your product team and ship with confidence? Check out this ebook to learn how Sentry's real-time error monitoring helps developers stay in their workflow to fix bugs before the user even knows there’s a problem.

Topics:
promises in javascript ,javascript ,promises

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}