2015-12-06 4 views
3

Я использую магистраль, чтобы получить модель + jquery обещание, чтобы убедиться, что она получена.jquery обещание return when ajax ошибка вызова

Я называю эту функцию

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 (паров) .then // сделать некоторые вещи выполняются прохождения но не при срабатывании ошибки. Все, что я хочу, это то, что полезная нагрузка на ошибку передается слишком, чтобы я мог управлять сообщением об ошибке ... e'etc

Я думаю, что мне не хватает чего-то общего в обещаниях, но я не уверен, что. Спасибо за вашу помощь!

ответ

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. 
}); 

Пожалуйста, попробуйте изменить бэкенд взять список идентификаторов и добавить их в пакете вместо - это было бы намного более эффективным, и сделать меньше запросов.

+0

да, хороший совет. –