![](/img/trans.png)
[英]jquery cannot get $.when to work when waiting for promises to resolve
[英]Jquery $.when not waiting for promises to resolve, reject
我有一個動態的API調用數組,需要出去。 但是,jQuery的$ .when似乎沒有在等待promise的解決或被拒絕,或者我不了解如何正確使用promise。
碼
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);
});
}
控制台輸出 .then()執行后,兩個api調用拒絕promise
因此,我不理解的是什么,而Stack Overflow或jQuery文檔上還有其他哪些問題沒有幫助我解決,那就是為什么.then()
行為在API調用完成並解決之前一切正常還是拒絕了他們的諾言? 在完成所有API調用后,我該如何處理解決或拒絕問題,還是我誤解了.when()
和promises的目的?
更改:
$ .when.apply(遞延)
至:
$ .when.apply($,遞延)
如此處所述: https : //medium.com/sungthecoder/making-multiple-ajax-calls-and-deciphering-when-apply-array-b35d1b4b1f50,並在Kevin B的評論中提到:
“當我們調用$ .when()函數時,該函數內部的'this'關鍵字將隱式綁定到jQuery對象。但是,當我們調用$ .when.apply()時,我們必須將'this'關鍵字顯式綁定到某些對象。並且我們知道綁定必須與jQuery對象一起進行,因此我們將jQuery對象(也稱為$)作為第一個參數。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.