La documentation AngularJS contient un avis de dépréciation pour le $http
success
et error
méthodes. Y a-t-il une raison spécifique pour laquelle cette abstraction a été retirée de la bibliothèque?
Le problème était que les méthodes _.success
_ et _.error
_ ne sont pas chaînables car elles ignorent le retour valeurs . Cela posait des problèmes aux personnes familiarisées avec le chaînage et encourageait le code pauvre émanant de personnes inconnues du chaînage . Observez tous les exemples sur StackOverflow qui utilisent le anti-motif différé .
Pour citer l'un des membres de l'équipe AngularJS:
IMO _
.success
_ et _.error
_ étaient une mauvaise conception d’API. Ce problème met en évidence un certain nombre de situations dans lesquelles les développeurs sont désorientés, car ils s’attendent à ce que _.success
_ et _.error
_ fonctionnent de la même manière que _.then
_ ou vice versa. Dans un monde parfait, je préférerais simplement laisser tomber ces "promesses" _$http
_. Au lieu de cela, nous pourrions encourager les développeurs à utiliser les API __ _$q
_ et _.then
.catch
_ standard (SOMECODE) __. Il est très avantageux pour l’OMI de travailler avec des paramètres explicites par rapport à l’objet de réponse.- AngularJS Issue # 10508 _
$http
_ _.success/.error
_ différent de la façon dont _.then
_ fonctionne.
Avis de dépréciation (v1.5)
Les méthodes de promesse héritées _
$http
_success
eterror
sont obsolètes. Utilisez plutôt la méthode standardthen
. Si _$httpProvider.useLegacyPromiseExtensions
_ est défini surfalse
, ces méthodes généreront une erreur _$http/legacy
_.- Référence d'API de service AngularJS $ http - avis de dépréciation
Les méthodes obsolètes _.success
_ et _.error
_ ont été supprimées de AngularJS 1.6.
En raison de b54a39 , les méthodes de rappel personnalisées obsolètes de _
$http
_ -.success()
et.error()
- ont été supprimées. Vous pouvez utiliser les méthodes standard.then()
/.catch()
promise, mais notez que les signatures et les valeurs renvoyées par la méthode sont différentes._$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; ... });
_- - Guide du développeur AngularJS - Migration vers v1.6 - http
Le modèle que javascript utilise en relation avec les promesses est uniquement avec .then(successCallback, errorCallback)
, donc ils visent probablement à utiliser le modèle js.