Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不使用useffect或setTimeout的情况下获取数据,并在react钩子中添加加载程序_Javascript_Reactjs_Typescript_Next.js - Fatal编程技术网

Javascript 如何在不使用useffect或setTimeout的情况下获取数据,并在react钩子中添加加载程序

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

细节*

API调用

下面是重新加载页面时出现的错误。

使用
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();
}, []);