Angularjs 동기화 작업 http 요청 $promise

// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
      var deferred = $q.defer();
      AccountService.getProfile().then(function(res) {
        deferred.resolve(res);
      }, function(res) {
        deferred.resolve(res);
      });
      return deferred.promise;
    }]);


// use a factory
// parent controller user
$scope.getPersonalInfo = function() {
          profilePromise.then(function(res) {
              var profile = res.content;
          ........

// define a scope used on child
$scope.profilePromise = profilePromise;

 
원인: 때로는 전방에서 개발할 때 같은 http 요청을 여러 번 호출해야 한다. 만약에 여러 번 불러오면 불필요한 http 요청을 낭비하지 않을 뿐만 아니라 여러 개의 코드 유지보수도 있어 개발에 많은 변화를 가져온다.
다른 한편, $boardcast 상위 레벨을 사용하여 하위 레벨에 메시지 데이터를 보내면 하위 레벨에서 비동기적인 조작으로 필요한 데이터를 정확하게 가져올 수 없습니다.
여기에factory를 추가합니다. 한 곳에 유지보수를 추가하고 다른 곳에서 직접 사용하면 됩니다.
 
참고:http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/

좋은 웹페이지 즐겨찾기