【问题标题】:Asynchronous angularJS - how to wait each request callback?异步 angularJS - 如何等待每个请求回调?
【发布时间】:2015-07-31 14:25:38
【问题描述】:

我正在构建一个 Angular 应用程序,有很多 ajax 调用。 我需要等待每个呼叫响应才能从中获取数据,这就是我制作的原因 同步。

$.ajax({
    type: "POST",
    url: servicePath,
    cache: false,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false,
    data: "{}",
    success: success,
    error: error
});

但这是一个问题,因为如果我调用“showPleaseWait()”(这是一个加载弹出窗口)它不会显示,因为除非 ajax 调用未完成,否则 DOM 不会更新。 它显示了我是否会让我的呼叫异步,但那时我无法获取我的数据。

拜托,你能帮我解决这个问题吗?

【问题讨论】:

标签: javascript jquery ajax angularjs asynchronous


【解决方案1】:

如果您构建 Angular 应用程序,您应该查看 https://docs.angularjs.org/api/ng/service/$http 或 https://docs.angularjs.org/api/ngResource/service/$resource

如果您需要一个接一个地进行 ajax 调用,您可以查看链式 Promise

var a = $http.get('/your-url');
var b = a.then(function(result) {
     // use the results here ...
     return $http.get('/your-other-url');
});
b.then(function(result) {
    // use the results here ...
})

【讨论】:

    【解决方案2】:

    对于 Angular 初学者来说,完全混淆的情况并不少见,但是你在两个地方出错了。我会推荐一些学习。在不鼓励用勺子喂食的情况下,这里有一些好的地方两个开始。

    1. 您需要了解在 Angular 中进行 ajax 数据调用的正确方法。这是一个很好的起点:(https://github.com/johnpapa/angular-styleguide#data-services)

    2. 在 Angular (https://github.com/johnpapa/angular-styleguide#return-a-promise-from-data-calls) 中使用 JavaScript 承诺。

    这一切都是因为您确实说过要使用 angular。但是,请在 jQuery 中使用 $ajax 函数查找 how you can use promises

    【讨论】:

      【解决方案3】:

      也许尝试调用您的 showPleaseWait() 函数,然后在发送 ajax 请求之前从角度调用 $scope.$apply()?它应该强制 Angular 刷新显示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-30
        • 2016-12-05
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        相关资源
        最近更新 更多