嵌套的fetch() array.map()不能返回值是因为fetch()函数是异步的,而array.map()是同步的。在嵌套的情况下,array.map()会立即执行,而不会等待fetch()函数的结果返回。因此,无法直接从array.map()中返回fetch()函数的结果。
解决这个问题的一种常见方法是使用Promise和async/await来处理异步操作。可以将fetch()函数包装在一个Promise对象中,并使用async/await关键字来等待fetch()函数的结果返回。然后,在array.map()中使用await关键字来等待每个fetch()函数的结果。
以下是一个示例代码:
async function fetchData(url) {
const response = await fetch(url);
const data = await response.json();
return data;
}
async function fetchAllData(urls) {
const promises = urls.map(url => fetchData(url));
const results = await Promise.all(promises);
return results;
}
const urls = ['url1', 'url2', 'url3'];
fetchAllData(urls)
.then(results => {
// 处理返回的结果
console.log(results);
})
.catch(error => {
// 处理错误
console.error(error);
});
在上面的代码中,fetchData()函数使用async/await关键字来等待fetch()函数的结果返回,并将结果转换为JSON格式。fetchAllData()函数使用array.map()来创建一个包含多个fetchData()函数的Promise数组,并使用Promise.all()来等待所有Promise的结果返回。最后,通过.then()方法处理返回的结果,或通过.catch()方法处理错误。
这种方法可以保证在array.map()中正确处理异步操作,并且可以获取到fetch()函数的返回值。
领取专属 10元无门槛券
手把手带您无忧上云