2016-09-25 60 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) –