等待承诺内的功能完成

时间:2017-09-19 13:57:20

标签: javascript angular angular-promise

我在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');
    })
}

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

1 个答案:

答案 0 :(得分:1)

如下链接你的承诺:

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