2016-09-25 5 views
0

기본적으로 각도 리소스 API 서비스가 다음과 같습니다. 나는 그 이하 나는, 내가 지금 다음과 같은 코드를 리팩토링 생각하고 그래서각도 리소스 체인 리팩터링

angular.module('user') 
.factory('UserAPI', ['$resource'], 
    function ($resource) { 
     return $resource('User', {}, 
     { 
      GetUserDetail1: { 
       method: 'GET', 
       url: url1 
      }, 
      GetUserDetail2: { 
       method: 'GET', 
       url: url2 
      } 
     } 
    } 
) 

UserAPI.GetUserDetail1({ ID: id }).$promise.then(function (res) { 
    UserAPI.GetUserDetail2({ ID: res.userID }).$promise.then(function (res1) { 

    }, function (errRes1) { 

    }); 
}, function (errRes) { 

}); 

(필요한 여러 체인이있는 특히) 관점을 코딩 너무 좋지 않다 생각하는 중첩 된 체인 방법을 사용 있지만 나는 이것이 할 수 있는지 확실하지 않습니다.

function getUserDetail2 (res) { 

}; 

UserAPI.GetUserDetails1({ ID: id}) 
.then(getUserDetail2(res)) 
.catch(function (errRes) { 
    // catch error if any error occur 
}); 

답변

1

대신에 함수를 호출하는 대신 함수 참조를 전달하면됩니다.

UserAPI.GetUserDetails1({ ID: id}) 
.then(getUserDetail2) //passed getUserDetail2 method here 
.catch(function (errRes) { 
    // catch error if any error occur 
}); 
+0

나는 본다. 감사. 모든 errorResponse가 실제로 잡히는 지 확인 하시겠습니까? 함수 (errRes)와 catch (errRes)의 차이점은 무엇입니까 ?? 둘 다 같은 값을 반환합니까? – vincentsty

+0

@vincentsty [이 기사] (http://odetocode.com/blogs/scott/archive/2015/10/01/javascript-promises-and-error-handling.aspx)를 검토하는 것이 좋습니다. –

관련 문제