使用Promise.all或for...of循环来等待所有异步操作完成并收集数据。
示例代码:
// 不推荐的做法:尝试在forEach循环之外使用异步数据 async function getData(urls) { const data = []; urls.forEach(async (url) => { const response = await fetch(url); const json = await response.json(); data.push(json); }); // 返回一个空的数组,因为forEach循环尚未完成 return data; }
// 推荐的做法:使用Promise.all来等待所有异步操作完成 async function getData(urls) { const promises = urls.map(url => fetch(url).then(response => response.json())); const data = await Promise.all(promises); return data; }
// 或者使用for...of循环 async function getData(urls) { const data = []; for (const url of urls) { const response = await fetch(url); const json = await response.json(); data.push(json); } return data; }