Der Hauptunterschied zwischen einem Anforderungsfehler und einem Antwortfehler ist ihre Reihenfolge in der von den Interzeptoren aufgebauten Versprechungskette. Werfen Sie einen Blick auf diese source code
// apply interceptors
forEach(reversedInterceptors, function(interceptor) {
if (interceptor.request || interceptor.requestError) {
chain.unshift(interceptor.request, interceptor.requestError);
}
if (interceptor.response || interceptor.responseError) {
chain.push(interceptor.response, interceptor.responseError);
}
});
while (chain.length) {
var thenFn = chain.shift();
var rejectFn = chain.shift();
promise = promise.then(thenFn, rejectFn);
}
So sehen Sie, dass für Abfangjäger, die alle vier Methoden zur Verfügung stellen, werden Sie ein Versprechen, wie so erhalten:
promise.then(requestFn, requestErrorFn).then(responseFn, responseErrorFn)
.
Um zu antworten 2. das Versprechen wird von var promise = $q.when(config);
erstellt, nachdem eine Anfrage initialisiert wurde. Auf den ersten Blick wird es ein wenig haarig genau, was passiert, aber das Config-Objekt scheint einige Standard-Callbacks zu haben. Ich nehme an, wenn etwas falsch mit der tatsächlichen Anfrage Syntax/Config ist, oder Winkel tritt ein Problem beim Senden der Anfrage (vielleicht kein Netzwerk verfügbar oder so ähnlich), dann das ursprüngliche Versprechen wird als abgelehnt, und dies würde die requestError
Handler verursachen aufgerufen werden.
Btw ist 400 schlechte Anfrage betrachten eine Anfrage Fehler oder Antwort Fehler? – desmondlee