我有很多async
我正在使用的功能,但我遇到了一个奇怪的问题。
我的代码,工作,看起来像:
async mainAsyncFunc (metadata) {
let files = metadata.map(data => this.anotherAsyncFunc(data.url));
return Promise.all(files);
}
anotherAsyncFunc
函数看起来像:
async anotherAsyncFunc (url) {
return await axios({
url,
}).then(res => res.data)
.catch(err => {
throw err;
});
}
当我尝试将更多数据附加到第一个函数 ( mainAsyncFunc
) 返回的内容时,我的问题就出现了。我的想法是map
自然而然地在 .
async mainAsyncFunc (metadata) {
files = metadata.map(data => {
return new Promise((resolve) => {
let file = this.anotherAsyncFunc(data.download_url);
let fileName = data.name;
resolve({
file,
fileName
});
});
});
return Promise.all(files);
}
如果不清楚,我会像往常一样获取文件本身,并将文件名附加到它,然后解析该对象。
出于某种原因,这将返回一个待处理的 Promise,而我希望它等待它们被实现,然后作为对象中的完整文件和名称返回。任何帮助理解我做错了什么将不胜感激。