react如何不阻塞后续的执行
异步操作与状态更新
在React中,使用setState或useState的更新函数通常是异步的。React会将多个状态更新合并以提高性能。若需在状态更新后执行逻辑,可通过回调函数或useEffect实现:
const [count, setCount] = useState(0);
setCount(prevCount => prevCount + 1, () => {
console.log('状态已更新');
});
使用Promise与async/await
将耗时操作封装为Promise或使用async/await语法,避免阻塞主线程。例如数据请求:

async function fetchData() {
const response = await fetch('api/data');
const data = await response.json();
// 更新状态
}
Web Workers处理密集型任务
对于CPU密集型任务(如复杂计算),使用Web Workers在后台线程执行:
const worker = new Worker('worker.js');
worker.postMessage({ data: heavyData });
worker.onmessage = (e) => {
// 处理结果
};
优化渲染性能
通过React.memo、useMemo和useCallback减少不必要的渲染:

const memoizedComponent = React.memo(ExpensiveComponent);
const memoizedValue = useMemo(() => computeValue(a, b), [a, b]);
批量更新与并发模式
React 18+的并发特性(如startTransition)可标记非紧急更新:
import { startTransition } from 'react';
startTransition(() => {
setNonUrgentState(newValue);
});
请求竞态处理
使用AbortController取消过时请求:
const controller = new AbortController();
fetch(url, { signal: controller.signal });
// 取消请求
controller.abort();






