异步angularJS - 如何等待每个请求回调?

时间:2015-07-31 14:25:39

标签: javascript jquery ajax angularjs asynchronous

我正在构建一个角度应用程序,有很多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不会更新。 它显示我是否会将我的通话设为异步,但我无法及时获取我的数据。

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

3 个答案:

答案 0 :(得分:0)

如果你构建一个有角度的应用程序,你应该看看https://docs.angularjs.org/api/ng/service/ $ http或https://docs.angularjs.org/api/ngResource/service/ $ resource

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

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

答案 1 :(得分:0)

对于Angular初学者来说,彻底混淆并不罕见,但是你在两个地方出错了。我会推荐一些学习。没有鼓励勺子喂养,这里有一些好的地方两个开始。

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

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

  3. 这一切都是因为你说你想要使用angular.However,在jQuery中使用$ ajax函数查找how you can use promises

答案 2 :(得分:-2)

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