Документация AngularJS содержит Уведомление об изъятии для методов success и error в $http. Есть ли конкретная причина, по которой эта абстракция была удалена из библиотеки?
Почему устаревшие/ошибки метода AngularJS $ http не рекомендуются? Удалено из v1.6?
Ответ 1
Проблема заключалась в том, что методы .success и .error не связаны друг с другом, потому что они игнорируют возвращаемые значения. Это вызвало проблемы для людей, знакомых с цепочкой, и поощряло плохой код от людей, незнакомых с цепочкой. Запишите все примеры в StackOverflow, которые используют отложенный анти-шаблон.
Чтобы процитировать одну из команд AngularJS:
IMO
.successи.errorбыли, во-первых, плохим дизайном API. Эта проблема освещает ряд ситуаций, когда разработчики путаются, потому что они либо ожидают, что.successи.errorбудут работать так же, как.thenили наоборот. В идеальном мире я предпочел бы просто отбросить эти$httpконкретные "promises". Вместо этого мы могли бы рекомендовать разработчикам использовать стандартный API$qAPI.thenи.catch. Очень мало преимуществ IMO в работе с явными параметрами над работой с объектом ответа.- Проблема с AngularJS # 10508
$http.success/.errorотличается от того, как работает.then.
Уведомление об изъятии (v1.5)
Методы долгосрочного обещания
$httpsuccessиerrorустарели. Вместо этого используйте стандартный методthen. Если для параметра$httpProvider.useLegacyPromiseExtensionsустановлено значениеfalse, то эти методы будут вызывать ошибку$http/legacy.- Ссылка на API-интерфейс AngularJS $HTTP - уведомление об отказе
UPDATE
Устаревшие методы .success и .error были удалены из AngularJS 1.6.
Из-за b54a39,
$httpустаревшие пользовательские методы обратного вызова -.success()и.error()- удалены. Вместо этого вы можете использовать стандартные методы.then()/.catch(), но обратите внимание, что сигнатуры методов и возвращаемые значения различны.$http(...) .then(function onSuccess(response) { // Handle success var data = response.data; var status = response.status; var statusText = response.statusText; var headers = response.headers; var config = response.config; ... }).catch(function onError(response) { // Handle error var data = response.data; var status = response.status; var statusText = response.statusText; var headers = response.headers; var config = response.config; ... });- Руководство разработчика AngularJS - Переход на v1.6 - http
Ответ 2
Образец, который использует javascript, связанный с promises, только с .then(successCallback, errorCallback), поэтому они, вероятно, стремятся использовать js-шаблон.