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