Ich bin ein bisschen verwirrt, je mehr ich online Ressourcen über $q
und $http
lesen, desto mehr dreht sich mein Kopf. Also, wenn ich einen $http.get
Anruf mache, schließt das kein Versprechen ein? Oder bringe ich $q
herein?
Antwort
Die $ http API ausgesetzt ist, auf der Grundlage der latenten/Versprechen APIs durch die $ q Service. Während für einfache Nutzungsmuster dies nicht so wichtig ist, ist es wichtig, für erweiterte Verwendung mit diesen APIs und die Garantien, die sie bieten, vertraut zu machen.
https://docs.angularjs.org/api/ng/service/$http
Was bedeutet, dass die $http.get
ohnehin ein Versprechen zurück. Keine Notwendigkeit, Ihren eigenen $q
Ansatz zu verschachteln. Gib einfach den $http
Aufruf zurück.
Es ist auf $ q gebaut und gibt ein Versprechen. Lesen Sie die Dokumentation: https://docs.angularjs.org/api/ng/service/ $ http
Und das Beispiel gibt:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
$ http.get ist nur eine bequeme Methode, auf dem oben.
Sie auf den folgenden Link
https://www.peterbe.com/plog/promises-with- $ http
Dieser Service ($ http.get()) kehrt Versprechen als Erfolg Rückruf und Fehler-Callback beziehen kann ... so diese Funktion selbst gibt Versprechen . Sie müssen nur damit umgehen
$ http ist auch ein Teil des Links kopieren Sie einfach den gesamten Link als Referenz –
$ http.get Anruf enthält das kein Versprechen? Die Antwort ist Ja, Sie ein Versprechen zurückkehren kann oder das Versprechen, mit $ http lösen
ein Versprechen von $ Rückkehr http.get
getData: function() {
return $http.get('some url'); // you can resolve this promise later
// using (then)
}
So später in Ihrem Code können Sie die oben Versprechen wie dieses
lösen...
myService.getData().then(function(response) {
// do something with response
}).catch()
Resolve das Versprechen Inline
getData: function() {
$http.get('some url').then(function(response) {
// do something with response
}).catch()
}
Wie gezeigt [hier] (https://docs.angularjs.org/api/ng/se rvice/$ http # get) $ http.get gibt ein Versprechen zurück. – k4l4m
Sie würden $ q trotzdem bringen, wenn irgendwo in der Kette, die Sie eine Ausnahme über $ q.reject() werfen wollen – sq33G