有一个接口,这个接口的作用是每次更新数据库的一个字段。
在一个循环里,连续发送多次ajax请求,并且需要这多次请求都成功之后,后面做一些事情。
成功的定义是:没有抛出异常,且服务器端返回过来的数据中的 state === "SUCCESS"
请问,如果在 state !== "SUCCESS"即修改不成功的时候,能使$q.all(promises)中的
error回调执行?
例如:
这时候你需要的是interceptors,具体做法可以这样:
//新增拦截器:
app.factory('StateInterceptor', function ($q)
{
return {
response: function (response)
{
if(response.data.state !== 'SUCCESS'){
return $q.reject(response);
}
return response;
}
}
});
//配置拦截器给app
app.config(function ($httpProvider)
{
$httpProvider.interceptors.push('StateInterceptor');
});
然后你的代码可以改成这样:
var toModifyAttr = {
title: '新标题',
desc: '新描述',
price: 199 // 新价格
}
var promises = Object.keys(oModifyAttr).map(key => $http(params));
$q
.all(promises)
.then(function() {
console.log('all done!!');
// 下面做一些修改成功之后的工作
// 移除loading遮罩
// ...
// ...
})
.catch(function() {
console.log('errors here');
});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。