我在数组上运行 forEach 循环并进行两次返回Promise的调用,我想填充一个对象 say this.options
,然后用它做其他事情。现在,如果我使用以下代码示例并首先进入 then 函数,我就会遇到异步问题。
$.when.apply($, someArray.map(function(item) {
return $.ajax({...}).then(function(data){...});
})).then(function() {
// all ajax calls done now
});
这是下面的工作代码,但它仅适用于数组中的第一个元素,因为我.then
在响应中调用了结果函数。我想先对数组的所有元素进行所有提取,然后调用结果函数来做某事。
array.forEach(function(element) {
return developer.getResources(element)
.then((data) = > {
name = data.items[0];
return developer.getResourceContent(element, file);
})
.then((response) = > {
fileContent = atob(response.content);
self.files.push({
fileName: fileName,
fileType: fileType,
content: fileContent
});
self.resultingFunction(self.files)
}).catch ((error) = > {
console.log('Error: ', error);
})
});
如何self.files
在 forEach 循环完成后填充对象,然后使用文件对象调用结果函数?