0

我调用一个 http 服务,遍历结果,每个项目都充当另一个 http 调用的键。

最好的方法是什么?

我猜从另一个 $http 调用中调用 $http 不起作用,因为外部 $http 循环可能会在内部 $http 调用完成之前退出?

// 伪代码:

$http.get(url).then((response) ->
  foreach response.data as item
        $http.get(item.url).then((response) ->
          foreach response.data as item
        )
  return result
)

真的不行,对吧?

4

2 回答 2

2

这个伪代码可以正常工作。这then是异步操作的回调。有关更多详细信息,请参阅Angular中的 Promise。

您是正确的,代码执行流程将继续,但是then当返回响应时,回调 ( ) 仍将触发。

因此,这意味着如果您绑定到$scope内部then,一切都会好起来的,数据将绑定到模型中。

于 2013-08-22T15:16:12.487 回答
1

这很好用,但是您需要在数组或对象中收集子响应并返回 $q.all(sub-responses) 以确保调用者等待它们解决。

坚持你的伪代码,我认为它看起来像:

$http.get(url).then((response) ->
 var r = [];
 foreach response.data as item
    r.push($http.get(item.url))
 return $q.all(r).then((subs) -> foreach ...)
 )
于 2013-08-22T15:20:30.797 回答