Je travaille sur une fonction qui calcule la distance entre un objet donné et un certain nombre d'autres endroits avec l'aide de Google Distance Matrix qui est bien sûr asynchrone avec des promesses.
Lorsque le nombre de places est de un, tout fonctionne très bien. Mais une fois que j'ai plus d'une promesse, $ q.all ne fait rien: il ne se résout pas en succès ni en erreur. Bien que j'ai vérifié dans la console que les appels à la matrice de distance de Google se produisent et renvoient un résultat correct. Toute idée de ce qui peut être en jeu ici? Je utilise AngularJS 1.6.4. Faites-moi savoir si vous avez besoin de plus de détails. Merci!
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;
});
travaillé comme un charme! Merci beaucoup! J'ai passé des heures à devenir fou! – Nat