AngularJS $ q.all然后马上开火

时间:2014-08-13 23:05:04

标签: javascript angularjs promise angular-promise

我有一个名为companies的资源数组,我在另一个资源上运行一些查询调用,然后触发一个回调。我尝试了以下操作,但回调立即被调用:

$q.all(companies.map(function(company) {
  return Person.query({
    companyId: company.id
  });
})).then(function(people) {
  // do stuff
});

http://plnkr.co/edit/OxasetGYU7xwojUNreiA?p=preview

1 个答案:

答案 0 :(得分:1)

您需要向$q.all提供一个promise数组,让它等待基础的promise履行,使用资源返回的$promise属性。

$q.all(companies.map(function(company) {
  return Person.query({
    companyId: company.id
  }).$promise; //<-- Here
})).then(function(people) {
  console.log(people);
});

<强> Demo