1
我很難把頭繞在JQuery承諾和延期對象上,所以請耐心等待。我還應該說我的應用程序正在使用React,Typescript和ES6。Web API的同步JQuery調用
比方說,我有對象的數組:
[{ Object }, { Object}, { Object }]
我想要做的是,對陣列中的每個對象,撥打電話出去的API與該對象的不同參數,獲取響應,然後再對另一個對象調用相同的API。基本上,我想將這些調用鏈接在一起,所以我一次一個,然後將它們添加到我的應用程序狀態。
這裏就是我這麼遠,但它很明顯,不工作:
private getData(options: any[]): void {
let promises: any[] = [];
options.map((option: any, key: number) => {
let deferred: JQueryDeferred<any> = $.Deferred();
deferred.done((response) => {
return this.getIndividual(option)
.done(response => {
console.log('done', response);
});
});
promises.push(deferred);
});
$.when.apply($, promises)
.then((response) => {
console.log('response', response);
}).fail((error) => {
console.log("Ajax failed");
})
.done(() => {
console.log('done');
});
}
private getIndividual(option: any) {
return apiCall(option.hashKey);
}
你讀過[this canonical QA](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)嗎? –
使用'options.map'並有效地丟棄結果是毫無意義的 –
[解決承諾一個接一個(即按順序)?](http://stackoverflow.com/questions/24586110/resolve-promises-one-之後 - 即按順序) – Andreas