AngularJSのData-bindingおかげで、ModelのObjectに変更があると、 すぐに$watchに捉えられ、Viewに反映することができます。 この特性をうまく利用すれば、非同期のものでも同期のように書けるのです。 例えば、下のように var fooApp = angular.module('fooApp'); fooApp.controller('userCtrl', function($scope, User) { $scope.user = User.getUser('foo'); // 同期のようにしか見えないよね(ドヤッ }); fooApp.factory('User', function($http) { return { getUser: function (username) { // 1.空きObjectを作成し result = {} $http.