我正在計算從給定對象到許多其他地方的距離的函數,藉助Google距離矩陣當然是異步的,因此我正在處理與承諾。
當地方的數量是一個,一切都很好。但是,一旦我有一個以上的承諾,$ 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;
});
工作就像一個魅力!非常感謝!花了幾個小時對此進行了討論! – Nat