Javascript 如何在不使用useffect或setTimeout的情况下获取数据,并在react钩子中添加加载程序
细节* API调用 下面是重新加载页面时出现的错误。Javascript 如何在不使用useffect或setTimeout的情况下获取数据,并在react钩子中添加加载程序,javascript,reactjs,typescript,next.js,Javascript,Reactjs,Typescript,Next.js,细节* API调用 下面是重新加载页面时出现的错误。 使用async函数,您实际上并没有做任何事情。使用async函数的要点是在内部使用wait来等待服务器的响应。尝试使用wait而不是then处理您向服务器发出的请求。我相信这样做会奏效: useEffect(() => { const fetchData = async () => { let res = await getLatest(PARAMS); setState(res['data
使用
async
函数,您实际上并没有做任何事情。使用async
函数的要点是在内部使用wait
来等待服务器的响应。尝试使用wait
而不是then
处理您向服务器发出的请求。我相信这样做会奏效:
useEffect(() => {
const fetchData = async () => {
let res = await getLatest(PARAMS);
setState(res['data'].data)
let resAll = await getAll({length: 9999});
setRowData(resAll['data'].data)
}
fetchData();
}, []);
您并没有真正使用
async
函数执行任何操作。使用async
函数的要点是在内部使用wait
来等待服务器的响应。尝试使用wait
而不是then
处理您向服务器发出的请求。我相信这样做会奏效:
useEffect(() => {
const fetchData = async () => {
let res = await getLatest(PARAMS);
setState(res['data'].data)
let resAll = await getAll({length: 9999});
setRowData(resAll['data'].data)
}
fetchData();
}, []);
因为您在HTTP请求完成之前就中止了它们,而您的服务器不知道如何处理中止信号。因此,
setTimeout()
允许HTTP请求完成并阻止中止。回答:不要中止HTTP请求。@RandyCasburn所以解决方案是添加setTimeout()
?是否有其他方法可以在不使用setTimeout的情况下获取数据?我删除了中止控制器
。这个被接受的答案是否回答了您的问题@RandyCasburn出现同样的错误,然后请求在其他地方出现错误。您的问题中没有提供该代码。因为您正在中止HTTP请求,而您的服务器不知道如何处理中止信号。因此,setTimeout()
允许HTTP请求完成并阻止中止。回答:不要中止HTTP请求。@RandyCasburn所以解决方案是添加setTimeout()
?是否有其他方法可以在不使用setTimeout的情况下获取数据?我删除了中止控制器
。这个被接受的答案是否回答了您的问题@RandyCasburn出现同样的错误,然后请求在其他地方出现错误。您的问题中没有提供该代码。重新加载页面时错误仍然存在。也许最好获取一些有关后端的信息。请求可能与异步函数无关。设置的超时会延迟HTTP请求,因此在发送HTTP请求之前可能需要发生一些事情。如果有一种方法可以获取后端的错误日志(因为它是一个状态代码500),它将帮助您解决问题。确定。。谢谢。我试着看看这是否能成为一个前沿问题。看看这个,这和你的问题很相似。我希望有帮助!重新加载页面时错误仍然存在可能最好获取一些有关后端的信息。请求可能与异步函数无关。设置的超时会延迟HTTP请求,因此在发送HTTP请求之前可能需要发生一些事情。如果有一种方法可以获取后端的错误日志(因为它是一个状态代码500),它将帮助您解决问题。确定。。谢谢。我试着看看这是否能成为一个前沿问题。看看这个,这和你的问题很相似。我希望有帮助!
getLatest: (params?: object) => Axios.get(`${API_URL}/latest` + (params ? getQueryParams(params) : ''))
useEffect(() => {
const fetchData = async () => {
let res = await getLatest(PARAMS);
setState(res['data'].data)
let resAll = await getAll({length: 9999});
setRowData(resAll['data'].data)
}
fetchData();
}, []);