[英]How to change jQuery Ajax done callback param
我希望函數做這些事情,並成為一個異步函數:
- 使用 jQuery $.get 下載 json
- 使用 json 創建對象
- 返回對象
所以如果我打電話
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.