等待承诺中的功能完成

Wait for functions within a promise to finish

我在 Angular.js 控制器中有以下功能:

vm.some_action = function() {
    var promise = IDService.getUserInfo().then(function(user) {
        vm.user.name = user.name;
        vm.box.color = 'red';
        vm.save()
    }, function(errorResponse) {
        Toast.error("Failed:", errorResponse);
    })

    $q.resolve(promise).then(function() {
        $location.path('/home');
    })
}

它应该等待承诺中的所有函数调用完成,然后才重定向到 /home。但是,它似乎执行了所有三个(两个分配和对 save() 的调用)并立即重定向。告诉它等待 save() 函数也完成的神奇方法是什么?

像下面这样串起你的承诺:

vm.some_action = function() {
    IDService.getUserInfo().then(function(user) {
        vm.user.name = user.name;
        vm.box.color = 'red';
        return vm.save()
    }).then(function() {
        $location.path('/home');
    }, function(errorResponse) {
        Toast.error("Failed:", errorResponse);
    });
}