angularjs - 使用Angular我们如何在完成一堆异步调用后进行调用

标签 angularjs q

这是我在 Controller 中的代码

myFactory.getPoints().success(function (data) {
    $scope.points = data;
});

myFactory.getStates().success(function (data) {
    $scope.states = data;
});

myFactory.getLeases().success(function (data) {
    $scope.leases = data;
});

我期望 $scope.leases 在 $scope.points 和 $scope.states 获得它们的值之后获得值。我了解到 $q 与 .then 不是同步的。是吗?

答案:我从答案中得出以下结论

$q.all([
        myFactory.getPoints().success(function (data) {
            $scope.Points = data;
        }).error(function (data) {
            $scope.error = "An Error has occurred while loading Points! " + data.ExceptionMessage;
        }),   //more, more, more

    ]).then(function () {
        myFactory.getLease().success(function (data) {
            $scope.leases = data;
        }).error(function (data) {
            $scope.error = "An Error has occurred while loading Leases! " + data.ExceptionMessage;
        })
});

最佳答案

您可以将 promise 链接在一起,以便让它们同步执行:

myFactory.getPoints().success(function (data) {
    $scope.points = data;

    return myFactory.getStates();
})
.success(function (data) {
    $scope.states = data;

    return myFactory.getLeases();
})
.success(function (data) {
    $scope.leases = data;
});

关于angularjs - 使用Angular我们如何在完成一堆异步调用后进行调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469774/

相关文章:

javascript - Angular 应用程序中 Azure AD OpenID Connect 注销的 CORS 问题

javascript - Q.js 并行映射

javascript - 使用 Q Promise - 有没有办法让这段代码不再重复?

javascript - 在模块之间共享 promise 与拥有多个 promise

node.js - 问:所有的 promise 和一系列的 promise 似乎都不起作用

javascript - AngularJS : table colspan rowspan dynamic calculation

angularjs - 使用 Angular UI-Router 更改 url,什么都不做

javascript - 使用 ngSanatize 的 HTML5 音频和 Angular 双向绑定(bind)问题

javascript - promise 和流量控制 : Early exit

javascript - 将 ng-repeat 变量传递给自定义指令