簡體   English   中英

jQuery $。當不等待承諾解決時,拒絕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM