如何从多个承诺返回承诺 [英] How return promise from multiple promises

查看:34
本文介绍了如何从多个承诺返回承诺的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我总是在控制台看到:

  1. teamsUpdated2
  2. addUserToProjects
  3. 从项目中删除用户

但应该按不同的顺序

var result = teamService.addOrDeleteUser(userId, newTeams, deleteTeams);
result.then(function () {
     console.log("teamsUpdated2");          
     });

具有多个承诺的函数:

var _addOrDeleteUser = function (userId, addToProjects, removeFromProjects) {
    var deferred = $q.defer();
    var promises = [];

    promises.push(projectResource.addUserToProjects({ userId: userId }, addToProjects, function (result) {
        console.log("addUserToProjects");
        deferred.resolve();
        return result;
    }));

    promises.push(projectResource.deleteUserFromProjects({ userId: userId }, removeFromProjects, function (result) {
        console.log("deleteUserFromProjects");
        deferred.resolve();
        return result;
    }));

    return $q.all(promises);
}

推荐答案

你可以使用承诺链 -

You can use promise chaining for that -

travelService
       .getDeparture( user )                                           // Request #1
       .then( function( departure ){
            $scope.departure = departure;                            // Response Handler #1
            return travelService.getFlight( departure.flightID );       // Request #2
        })
        .then( function( flight ){
             $scope.flight = flight;                                // Response Handler #2
             return weatherService.getForecast( $scope.departure.date ); // Request #3
        })
        .then( function( weather ){
            $scope.weather = weather;                               // Response Handler #3
        });

有关更多参考,请参阅this

这篇关于如何从多个承诺返回承诺的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆