我在Angular有一个工厂,我想进行两次API调用并将数据返回给我的控制器。我在返回两组数据时遇到了一些麻烦 - 尤其是使用.catch。我是一个Angular n00b,所以我对异步承诺有点不屑一顾。我已经尝试过使用$ q.all但它似乎没有使用捕获。如果您需要更多信息,请告诉我!!
.factory('initializeCoreModels', ['$q','userModel', 'redirect', 'countryList',
function($q, userModel, redirect, countryList){
return function(){
return countryList.getAll()
return userModel.getModel()
.catch(function(error){
if (error.status){
return redirect.hrefUrl('/');
}
return $q.reject(error);
});
};
答案 0 :(得分:1)
你只能有一次回归。所以你需要返回一个带有两个promises的对象:
app.factory('initializeCoreModels',['$q','userModel', 'redirect', 'countryList', function ($q, userModel, redirect, countryList) {
var returnObj = {
countryList: countryList.getAll()
userModel: userModel.getModel()
};
returnObj.userModel.catch(function(error){
if (error.status){
return redirect.hrefUrl('/');
}
return $q.reject(error);
});
return returnObj;
}]);
这仍会检查您的userModel承诺,但您现在可以使用.catch()
访问您的承诺