首页 > 解决方案 > setState 在 React 中太滞后了

问题描述

我在我的 React 项目中使用pdf-lib(JS 库)。我正在与图书馆一起做繁重的工作,async/await并希望通过更新状态来更新进度条。即使我打电话setStatesetTimeout状态也会在繁重的工作结束后更新。所以进度条只显示0%和100%。你能弄清楚吗?我不能分享我的代码,但如果你愿意,我会展示一点。

标签: reactjstypescript

解决方案


请记住,“异步”并不意味着它“并行”运行。这只是意味着代码以受控方式“乱序”运行。

您的页面线程只是一个线程,因此如果您有一个长时间运行的函数,您可以将该函数标记为async或运行它,setTimeout但当您的函数代码运行时,没有其他任何东西可以运行(尽管在case of async: 直到代码到达await, 我假设 pdf-kit 不使用)。

如果您需要进行繁重的工作,请使用service worker,它是专门用于此事物的特殊 API,在单独的线程中运行繁重的工作负载,这样您就不会阻塞主页线程。


推荐阅读