AngularJSのドキュメントには、$http
success
およびerror
メソッドの廃止通知があります。この抽象化がライブラリから削除された具体的な理由はありますか?
問題は、.success
および.error
メソッドがチェーン可能でないである値。これはchainingに精通している人々に問題を引き起こし、chaining。 deferred anti-pattern を使用するStackOverflowのすべての例をご覧ください。
AngularJSチームの1つを引用するには:
IMO
.success
と.error
は、そもそもAPI設計の悪い部分でした。この問題は、.success
と.error
が.then
と同じように機能すること、またはその逆を期待するために開発者が混乱する多くの状況を強調しています。完璧な世界では、これらの$http
固有の「約束」を捨てるだけです。代わりに、開発者に標準の$q
promise API.then
および.catch
の使用を奨励することができます。応答オブジェクトを操作するよりも、明示的なパラメーターを操作する場合のIMOの利点はほとんどありません。
廃止のお知らせ(v1.5)
$http
レガシー約束メソッドsuccess
およびerror
は非推奨になりました。代わりに標準のthen
メソッドを使用してください。$httpProvider.useLegacyPromiseExtensions
がfalse
に設定されている場合、これらのメソッドは$http/legacy
エラーをスローします。
非推奨の.success
および.error
メソッドは、AngularJS 1.6から削除されました。
b54a39 により、
$http
の非推奨のカスタムコールバックメソッド-.success()
および.error()
-は削除されました。代わりに標準の.then()
/.catch()
promiseメソッドを使用できますが、メソッドのシグネチャと戻り値が異なることに注意してください。$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; ... });
Promiseに関連して使用するJavaScriptのパターンは.then(successCallback, errorCallback)
のみであるため、おそらくjsパターンを使用することを目指しています。