在 React 中,可以使用 setInterval()
函数每隔一段时间执行一次函数。如果需要在获取到返回结果后停止执行,可以使用 clearInterval()
函数停止定时器。
以下是一个示例代码,它每隔 2 秒钟执行一次 checkData()
函数,直到 checkData()
函数返回结果后停止执行:
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
let timer = setInterval(async function() {
let result = await checkData(); // 检查数据,如果有结果则返回
if (result) {
clearInterval(timer); // 停止执行
}
}, 2000);
return () => {
clearInterval(timer); // 组件卸载时停止定时器
};
}, []);
return <div>My Component</div>;
}
async function checkData() {
// 异步请求数据
let response = await fetch('https://example.com/data');
let data = await response.json();
// 检查数据,如果有结果则返回
if (data && data.result) {
return data.result;
}
return null;
}
在上面的代码中,我们在 MyComponent 组件中使用了 useEffect() 钩子来执行定时器。在 useEffect() 中,我们定义了一个名为 timer 的变量,用于存储定时器的 ID。setInterval() 函数每隔 2 秒钟执行一次传入的异步函数,这个函数会调用 checkData() 函数检查数据,并在检查到数据结果后调用 clearInterval() 函数停止定时器。
需要注意的是,setInterval()
函数会一直执行,直到被手动停止。如果需要在特定条件下停止定时器,可以使用 clearInterval()
函数手动停止。