15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AngularJSの$resourceの仕組み

Posted at

ここでちょっと勘違いなコメントをしてしまいました。

AngularJSの$resourceサービスを使うと、以下のように非同期な処理なのに同期呼び出しのように書けるということなんですが、僕はこれをPromiseを返して実現してるものだと思っていました。

var User = $resource('/api/user/:username');
$scope.user = User.get({username: 'foo'});

でも違うんですね。
公式ドキュメントを読むとちゃんと書いてあります。

$resourceオブジェクトのメソッドを呼び出すとすぐに空の参照を返し、サーバーから結果が返ってくるとその結果を参照に追加すると。

確かに実装を見てもそうなってました。
戻り値が配列でない場合(getとか)は、まずResource型のインスタンスを作って参照を返し、サーバーから結果を受け取ったら参照の中身を置き換える。
戻り値が配列の場合(queryとか)は、まず空の配列を返し、サーバーから結果を受け取ったらそれを配列にpushする。

なるほど。よくできてますね!

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?