【发布时间】:2017-06-08 22:26:29
【问题描述】:
我正在研究借助 Google 距离矩阵计算从给定对象到许多其他地方的距离的函数,这当然是异步的,因此我正在处理承诺。
当位置数为 1 时,一切正常。但是,一旦我有多个承诺, $q.all 就不会做任何事情:它既不会成功解决,也不会出错。尽管我在控制台中检查了对 Google 距离矩阵的调用确实发生并返回了正确的结果。有什么线索可以在这里玩吗?
我正在使用 AngularJS 1.6.4。如果您需要更多详细信息,请告诉我。谢谢!
var requests = [];
for (var i = 0; i < ctrl.places.length; i += 1) {
var deferred = $q.defer();
requests.push(deferred.promise);
var destination = ctrl.places[i].latLng;
service.getDistanceMatrix({
origins: [ctrl.origin],
destinations: [destination[0] + "," + destination[1]],
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
deferred.resolve(response.rows[0].elements[0].distance.text);
}
});
}
$q.all(requests).then(function(result) {
ctrl.distances = result;
});
【问题讨论】:
标签: angularjs angular-promise q