在我的Angularjs应用程序中,我试图在其中一个promise块中捕获$ q.reject但无法执行此操作。
在下面的代码中,我拒绝了响应,如果响应返回空数据,我需要在其中一个promise块中捕获被拒绝的响应,并使用$ state进行一些重定向。 目前它没有进入$ q.reject()的成功块的错误块。
有没有办法将$ q.reject捕获到promise块?
x.retrieve=function(id){
return $http.get(url);
}
var promise=x.retrieve(id);
promise.then(
function(response){
if($.isEmptyObject(response.data)){
return $q.reject(response);
}
y.push({x:a});
},function (rejection) {
$state.go("detail");
}
);
任何帮助将不胜感激。
谢谢。
答案 0 :(得分:5)
请尝试以此格式更改。
promise.then(function(response){
if($.isEmptyObject(response.data)){
return $q.reject(response);
}
y.push({x:a});
}).catch(function (rejection) {
$state.go("detail");
});
<强>更新强>: 对于IE,你可以这样做:
promise.then(function(response){
if($.isEmptyObject(response.data)){
return $q.reject(response);
}
y.push({x:a});
})['catch'](function (rejection) {
$state.go("detail");
});