簡體   English   中英

如何更改 jQuery Ajax done 回調參數

[英]How to change jQuery Ajax done callback param

我希望函數做這些事情,並成為一個異步函數:

  1. 使用 jQuery $.get 下載 json
  2. 使用 json 創建對象
  3. 返回對象


所以如果我打電話

func.then(a => {
  ...
})

“a”將是在步驟 2 中創建的對象

所以我寫了,

    createObj(sourceUrl) {
        return $.get(sourceUrl).done((data)=> {
            let thing = new Something();
            thing.id = data.id;
            thing.messages = data.messages; 

            return Promise.resolve(thing);
        })
    }

我稱之為

this.createObj(url).done((thing) => {
  console.log('Got a', thing);
  return thing.go()
}

當我調用它時,我希望“.done()”部分會收到在“createObj()”中創建的“東西”
然而,結果是我在 $.get() 中得到的 json

我是否誤解了“解決”的概念?
還是 jQuery Ajax 的行為與標准 ES6 Promise 不同? 因為我在其他部分用 Promise.resolve 寫了一些東西,它奏效了

這應該有效:

const createObj = (sourceUrl) => {
  return new Promise((resolve, reject) => {
    $.get(sourceUrl).done((data)=> {
      let thing = new Something();
      thing.id = data.id;
      thing.messages = data.messages; 

      return resolve(thing);
    });
  });
}

createObj(url)
  .then((data) => console.log(data));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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