0

目前在Angular中我有这个:

app.factory("myService", function($http, $q) {
    return {
        doBoth: function(data) {
            return $q.all([$http.post("/search/local", data), $http.post("/search/shape", data)]);
        }
    };
});

我这样称呼它:

$scope.$on("localSearch", function(event, data) {
    return myService.doBoth(data);
});

但是我不认为它是异步发生的。它们都需要相当长的时间才能完成,所以我需要 Angular 同时请求两者,所以完整的请求不是一个 + 另一个 - 而是它们都返回的最快时间。

4

1 回答 1

0

如果要在两个查询完成后触发回调,请将其放在$q.then()方法中。

$scope.$on("localSearch", function(event, data) {
  return myService
    .doBoth(data)
    .then(function (response) {
      // both deffered completed
    });
});

我在这里创建了示例http://plnkr.co/edit/7G8oFMSx8cPC98zDhlNq?p=preview

于 2013-03-15T18:31:33.007 回答