在angularjs中重置$ q

时间:2015-10-26 04:15:52

标签: angularjs

我正在使用$ q运行三个不同的 $ http 调用(在控制器和服务之间进行通信)。

首先,我有代码从db获取所有数据。

在使用中,

   q = $q.defer();
   $http({ url:"Url/fetchFeeds/", success:function(data){
   d.resolve(data);
   }); 
   return r.promise;

对于Controller,我使用$ q.all等待ajax完成。

问题是我使用相同的流(Url / updateFeeds /)从第二个网址获取数据。但是在控制台中,第二个ajax调用转到" Url / fetchFeeds /"

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您可以使用$q.all之类的

$q.all([p1.then(thenFn), p2.then(thenFn)])
    .then(function(values) {
        console.log(values);
        return values;
    });

Fiddle link

答案 1 :(得分:0)

您应该使用$ http呼叫的退货承诺。

var callX = function() {    
   return $http({ url:"Url/fetchFeeds/", success:function(data){
       return data;
   });
}

您可以在数组中收集多个调用并使用$ q.all。

var promises = [];
promises.push(callX().then(...));
promises.push(callY());

$q.all(promises).then(...);