当ajax调用错误时,jquery promise返回

时间:2015-12-06 10:19:06

标签: jquery ajax backbone.js promise

我正在使用骨干来获取模型+ jquery的承诺,以确保它已被提取。

我叫这个功能

rippleidcollection.createIdList(param).then // do some stuff

这在获取触发成功时效果很好但是当触发错误时,上面的部分函数没有执行(这是一个问题,因为我想触发错误信息)。

这是createdIdList函数的代码:

createIdList: function(toresolves) {
        var self = this;

        var xhrs = _.map(toresolves, function(toresolve,i) {
                var id = toresolve.id;
                var model = new RippleId({id:id}, address);
                var xhr = model.fetch({
                    success: function(model,response) {
                        self.add(model);
                    },
                    error: function(model, response) {
                        self.add(model);
                    }
                });       
            return xhr;     
        });

        var sync = $.when.apply(null, xhrs);
        return sync;
    }

因此,当(model.fetch)成功时, rippleidcollection.createIdList(param)。然后执行一些东西执行传递有效负载,但不会在触发错误时执行。我想要的只是错误有效载荷也被传递,所以我可以管理错误信息... e'etc

我认为我遗漏了一些关于承诺的基本内容,但我不确定是什么。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

then采用第二个参数来处理错误:

rippleidcollection.createIdList(param).then(function(result){
   // stuff to do on success
}, function(err){
   // deal with error case, your code for handling errors goes here.
});

请考虑更改后端以获取ID列表并将其添加到批处理中 - 这样可以提高效率并减少请求。