【AngularJS1】$http,$q,Promise回りメモ

$httpサービス

$http | AngularJS 1.2 日本語リファレンス | js STUDIO

非同期なHTTPリクエストを提供してくれるサービス。 例えば、putでURL投げて結果を取得する例。

const url = 'http://api.hostname.com/manapi/user/add';
let data = {
  userid : userid,
  username : username,
  passowrd : password,
};


$http.put(url, data)
    .success(function(data, status, headers, config) {
        let user_no = data.id;
        alert(`ユーザーを登録しました。(ユーザーNo:${user_no}`);
    })
    .error(function(data, status, headers, config) {
        alert('通信に失敗しました。時間をおいて再度ご実行ください。');
    });

jQueryajax()やget()などと機能自体は同じ。

Promiseパターンなオブジェクトを戻り値として返すので、 あとでメモる$qサービスなどと連携して楽に非同期制御が書ける。 (よく、こんな仕組みを考えたものだ。)

$qサービス

AngularJS

非同期処理のユーティリティクラス。

まとめるのがしんどかったのと 非常にわかりやすい記事があったので参考にさせていただいた。

dev.classmethod.jp

こいつが非常に強力で、なるべくdirectiveやcontrollerでは直接サービス依存しないようにしている・・・。

Promise

Promiseとは (※以下はES6のPromiseについての資料です。Angularのとは用法が若干異なります。)

qiita.com

Angularは、Promiseパターンのオブジェクトを独自に提供している。 IE11など、ES6のPromiseを実装していないブラウザでも安心して?使える。

AngularのPromiseもES6と同様に、一般にPromiseパターン、そしてFutureパターン(こちらのほうの性格が強い)を足したような実装になっている。