(一)问题描述
需要读取多个数据,也就是有多个fetch函数,但是这些数据又需要同时用。由于fetch是异步的,因此每个fetch单独进行是没有办法同时获得数据的,此时有两种可行的方式。
(二)解决方法
1. 使用Promise链
在嵌套的fetch函数中,可以通过返回一个Promise对象来传递数据。在外层fetch函数中,可以通过.then()方法来获取内层fetch函数返回的数据。简单来说就是:
fetch(url1).then((r)=>r.json()).then((rjson)=>{XXXXXreturn fetch(url2).then((response)=>response.json()).then((resjson)=>{XXXXX});
})
这样一层套一层fetch...return fetch...
2. 使用async/await
使用async/await可以使代码更加简洁和易读。在外层的async函数中,可以使用await关键字来等待内层fetch函数的返回结果。
async function fetchData() {try {const response1 = await fetch(url1);const data1 = await response1.json();// 使用第一个fetch请求的响应数据进行处理XXXXX// 在这里可以调用第二个fetch请求,并将第一个fetch请求的数据传递给第二个fetch请求const response2 = await fetch(url2, {method: 'POST',body: JSON.stringify(data1)});const data2 = await response2.json();// 使用第二个fetch请求的响应数据进行处理XXXXX} catch (error) {// 处理错误}
}fetchData();
参考文章: 如何在嵌套的fetch函数之间传递数据 - 腾讯云开发者社区 - 腾讯云