简体   繁体   中英

Synchronous calls on asynchronous processes

I need to execute a function LoginUser after the RegisterUser function has finished.

The issue is that both functions rely on internal asynchronous calls.

I have tried this, but LoginUser function doesn't seem to wait for RegisterUser to finish.

Do you know how I can solve this?

var registerUser = new Promise(
    function(resolve, reject) {     

        doDometing ...                 

        var registerUserSuccess = function() {
            doDometing ...                             
            resolve("value 1");                                
        };

        var registerUserFailure = function(errors) {
            doDometing ...   
            resolve("value 2");
        };

        externalCall1().then(registerUserSuccess,registerUserFailure);
    }
);


var loginUser = new Promise(
    function(resolve, reject) {     

        // doSomething ...                 

        var loginUserSuccess = function() {
            doDometing ...                             
            resolve("value 3");                                
        };

        var loginUserFailure = function(errors) {
            doDometing ...   
            resolve("value 4");
        };

        externalCall2().then(loginUserSuccess,loginUserFailure);
    }
);

registerUser.then(loginUser);

You should call loginUser in the "RegisterUserSuccess" function.

RegisterUserSuccess is called when the asynchronous call is finished.

var registerUserSuccess = function() {
    // doSomething... 
    loginUser(); // your function call for login user goes here                            
    resolve("value 1");                                
};

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM