如何从多个承诺中返回承诺

How return promise from multiple promises

本文关键字:承诺 返回      更新时间:2023-09-26

>我总是在控制台中看到:

  1. 团队更新2
  2. 添加用户到项目
  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);
}

你可以为此使用承诺链 -

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
        });

有关更多参考,请参阅此处