[解決済み] Angular HttpPromise: `success`/`error` メソッドと `then` の引数の違い。
質問
によると
AngularJSのドキュメント
への呼び出しは
$http
は以下を返します。
を返します。 約束 オブジェクトに、標準的な では メソッドと 2 つの http 固有のメソッドがあります。 成功 と エラー . その では メソッドは2つの引数を取ります。 成功 と エラー コールバックが呼び出され、レスポンスオブジェクトが返されます。また 成功 と エラー メソッドはひとつの引数、つまりリクエストが成功したときと失敗したときにそれぞれ呼び出される関数を受け取ります。これらの関数に渡される引数は、then メソッドに渡されるレスポンスオブジェクトの非構造化表現です。
はともかくとして
response
オブジェクトは、あるケースでは構造化されていますが、あるケースでは構造化されていません。
-
の引数として渡される成功/エラーコールバックを指定します。
promise.then
-
の引数として渡されるコールバックは
promise.success
/promise.error
プロミスのメソッド
あるのでしょうか?一見同じように見えるコールバックの受け渡しを、この2つの異なる方法で行うことに何の意味があるのでしょうか?
どのように解決するのですか?
NB この回答は、以下のコメントで指摘されているように、事実と異なるものです。 success() は元の約束を返します。 私は変更せず、OPの編集に任せます。
この2つの大きな違いは
.then()
の呼び出しはプロミス(コールバックから返された値で解決)を返すのに対し
.success()
はより伝統的なコールバックの登録方法であり、プロミスを返しません。
プロミス型コールバック(
.then()
を使用すると、プロミスを簡単に連鎖させることができます(呼び出しを行って、結果を解釈して
その後
別の呼び出しを行い、結果を解釈し、さらに別の呼び出しを行うなど)。
は
.success()
メソッドは、プロミスAPIを連鎖的に呼び出したり操作したりする必要がない場合(例えばルーティングなど)に、合理的で便利なメソッドです。
要するに
-
.then()
- promise API の全機能を利用できるが、若干冗長になる -
.success()
- はプロミスを返しませんが、少し便利な構文を提供します。
関連
-
[解決済み】Angularjsのng-viewが動作しない。
-
[解決済み] jQueryのディファレンシャルとプロミス - .then() vs .done()
-
[解決済み] select 要素のデフォルト値を設定するための ng-option の使用方法
-
[解決済み] Angular ng-repeat エラー "リピータ内の重複は許可されません。"
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] コントローラでフィルタを使用するには?
-
[解決済み] ng-modelとng-bindの違いは何ですか?
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
-
[解決済み】AngularJS 。observe メソッドと $watch メソッドの違い
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】npm UNMET PEER DEPENDENCYの警告を修正するにはどうすればいいですか?
-
[解決済み] angularJSのSTATEを理解する
-
[解決済み] Angular 1.2+ で ng-bind-html-unsafe を複製するために $sce.trustAsHtml(string) を使用するにはどうしたらよいですか?
-
[解決済み] Angular UI-Routerのマルチビュー
-
[解決済み] どのように$state.goにパラメータを追加しますか?
-
[解決済み] Angularjsを使用してローカルストレージにデータを保存するにはどうすればよいですか?
-
[解決済み] AngularJSの.$on()とは?
-
[解決済み] angularJSの::の意味するところ
-
[解決済み] なぜAngularJSはselectに空のオプションを含めるのですか?
-
[解決済み] AngularJSでコントローラを2回実行する場合の対処法