У меня есть динамический массив вызовов API, которые нужно отключить.Тем не менее, jQuery $ .when, по-видимому, не ожидает обещаний разрешить или отклонить, или я не понимаю, как правильно использовать обещания.
Код
function addEntry(data) {
return new Promise(function(resolve, reject) {
_customAPIClass_.post('some/url/path', data)
.done(function(){
console.log('resolving');
resolve(1000)
})
.catch(function(){
console.log('rejecting');
reject(2000);
})
});
}
let deferreds = [];
$.each(form.find(el), function(i, element) {
let data = {
id: $(element).find('.id').val(),
name: $(element).find('.name').val()
}
deferreds.push(addEntry(data));
}
if (deferreds.length) {
$.when.apply(deferreds).then(function(data){
console.log('All done', data)
}, function(err){
console.log('error', err);
});
}
Вывод на консоль Два вызова API, отклоняющие обещание после выполнения .then () 
Итак, что я не делаю?Я не понимаю, а какие другие вопросы здесь, касающиеся переполнения стека или документации по jQuery, не помогают мне решить, почему .then()
ведет себя так, как будто все в порядке до того, как вызовы API завершены, разрешены или отклонены их обещания?Как мне обрабатывать, разрешает или отклоняет после выполнения всех вызовов API, или я неправильно понимаю цель .when()
и обещаний?