howdylikes

Google Developersってわかりづらいよね

AngularJS プロミス $q

jQueryでいう$.Deferredですかね。

https://code.angularjs.org/1.4.8/docs/api/ng/service/$q

$q.defer()でdeferredオブジェクトを取得してdeferred.promiseを返すようにする。
deferredオブジェクトにはpromiseと3つのメソッドが存在し必要に応じて使用する。

promise: Promise
resolve: (value) // 成功用
reject: (value) // 失敗用
notify: (value) // 通知用

promiseには以下の3つのメソッドが存在する。
通常はthenを使用し失敗時だけハンドリングしたい場合はcatch、結果問わず後処理をしたい場合はfinallyを使用。

then(successCallback, errorCallback, notifyCallback)
catch(errorCallback)
finally(callback, notifyCallback)

$q.all(promises);ですべてのプロミスが解決したあとに解決するプロミスを生成する

e.g.