Ich habe einen rekursiven Funktionsaufruf in AngularJS erstellt und frage mich nur, gibt es eine bessere Möglichkeit, dieses Problem zu lösen?
Mein Code ist folgende:
function getLocation(query, map, object, delay) {
var deferred = $q.defer();
var service = new google.maps.places.PlacesService(map);
service.textSearch({ query: query }, function (results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
var loc = results[0].geometry.location;
object.lang = loc.lng();
object.lat = loc.lat();
deferred.resolve(object);
} else {
if (status === "OVER_QUERY_LIMIT") {
delay += 100;
deferred.resolve($timeout(function() {
var deferred = $q.defer();
getLocation(query, map, object, delay).then(function (object) {
deferred.resolve(object);
});
return deferred.promise;
}, delay));
} else {
deferred.reject(status);
}
}
});
return deferred.promise;
}
Würden Sie nicht nur Platz, die 'verschoben. Auflösen des Anrufs ** innerhalb ** der Zeitüberschreitung? – adeneo
Habe es schon mal versucht, aber mein Problem nicht gelöst und nicht gewartet. – Embrioka
Verzögerung ist in Millisekunden. Sie werden in der Reihenfolge von 100 ms inkrementiert, versuchen Sie es in Sekunden zu verwenden (multiplizieren Sie 1000). [Siehe die Dokumente] (https://docs.angularjs.org/api/ng/service/$timeout) – Mahesh