5.5
レスポンスの横取り
127
deferred.promise.then(fetchUser)
.then(fetchUserPermissions)
.then(fetchUserListData)
.then(function(list) {
//
データのリストに対して、何らかの処理を行います
}, function(errorReason) {
//
すべてのエラーをこの
1
箇所で処理できます
});
複雑な階層構造は解消され、連鎖のためのスコープや集中的なエラー処理も実現されています。
AngularJS
の
$q
サービスをインクルードすれば、どんなアプリケーションでもこのコードのよう
に非同期処理を行えます。また、この仕組みにはレスポンスインターセプタというとても便利な機
能も含まれています。
5.5
レスポンスの横取り
これまでの解説では、サーバの呼び出しやレスポンスの解釈、優れた抽象化レイヤーによるレス
ポンスのラッピング、非同期処理などを紹介してきました。しかし、実際のアプリケーションでは
サーバ呼び出しのたびに何らかの処理(エラー処理、認証、有害なデータの除去など)を行うこと
がよくあります。
$q
の
API
に精通すると、このような処理はすべてレスポンスインターセプタと呼ばれる仕組み
を使って行えることがわかります。レスポンスインターセプタを使うと、アプリケーションに渡さ
れる前のレスポンスを横取りできます。データの変換やエラー処理など、ありとあらゆる操作を行
えます。
次の例では、レスポンスを横取りしてちょっとした処理を行っています。 ...