Я новичок в Angular (или JavaScript вообще), и у меня есть немой вопрос. Я понимаю, как работают обещания, но при каких конкретных обстоятельствах будет отклонено обещание, возвращенное запросом $http
(PUT
или GET
или что-то еще)? Я уверен, что если запрос истечет, то обещание определенно будет отвергнуто; но как насчет других ошибок, таких как 404 или 403? Я не мог найти такую информацию из Angular Docs... Большое спасибо!
Если каким-либо образом возникнет ошибка $ http, обещание будет отклонено. $ HttpProvider основан на шаблоне Interceptor, где каждый запрос/ответ проходит через конвейер, который обрабатывает эту ошибку.
По умолчанию Interceptor, встроенный в AngularJS, сделает что-то вроде этого, чтобы отклонить обещание:
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection); //<------ Rejecting the Promise here given a http error
}
Вы можете создавать и прикреплять свой собственный Interceptor внутри $ httpProvider для обработки конкретных ошибок (400, 500 и т.д.). Взгляните на раздел " Перехватчик" в разделе документации по http.