javascript - 关于angular的promise的问题
高洛峰
高洛峰 2017-04-11 10:45:39
[JavaScript讨论组]

有一个接口,这个接口的作用是每次更新数据库的一个字段。

在一个循环里,连续发送多次ajax请求,并且需要这多次请求都成功之后,后面做一些事情。

成功的定义是:没有抛出异常,且服务器端返回过来的数据中的 state === "SUCCESS"

请问,如果在 state !== "SUCCESS"即修改不成功的时候,能使$q.all(promises)中的
error回调执行?

例如:

var toModifyAttr = {
  title:"新标题",
  desc:"新描述",
  price:199 // 新价格
}

var promises = [];


for( var attr in toModifyAttr ) {

     var promise = $http( params ).then(function( result ){
     
           if( result.state === "SUCCESS" ) {
           
              console.log("修改"+attr+"属性成功");
            
           }else{
              
              console.log("修改"+attr+"属性失败");
            
          }
       }).catch(function( e ) {
       
           console.log("修改"+attr+"属性失败");
           
           console.log(e);
           
       }) 
       
    promises.push(promise);
   
}

// 保证所有都保存成功。
// 如果没有抛出异常,但是修改失败了,即state不是"SUCCESS",如何能使error回调执行呢?
$q.all(promises).then(function(){

    console.log('all done!!');
    
    // 下面做一些修改成功之后的工作
    // 移除loading遮罩
    // ...
    // ... 

},function(){
    
    // 这个error回调,如果state!=="SUCCESS"也要执行。如何做到?
    console.log('没有全部成功');  

})
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号