reactjs - setState 在 React 中太滞后了
问题描述
我在我的 React 项目中使用pdf-lib
(JS 库)。我正在与图书馆一起做繁重的工作,async/await
并希望通过更新状态来更新进度条。即使我打电话setState
,setTimeout
状态也会在繁重的工作结束后更新。所以进度条只显示0%和100%。你能弄清楚吗?我不能分享我的代码,但如果你愿意,我会展示一点。
解决方案
请记住,“异步”并不意味着它“并行”运行。这只是意味着代码以受控方式“乱序”运行。
您的页面线程只是一个线程,因此如果您有一个长时间运行的函数,您可以将该函数标记为async
或运行它,setTimeout
但当您的函数代码运行时,没有其他任何东西可以运行(尽管在case of async
: 直到代码到达await
, 我假设 pdf-kit 不使用)。
如果您需要进行繁重的工作,请使用service worker,它是专门用于此事物的特殊 API,在单独的线程中运行繁重的工作负载,这样您就不会阻塞主页线程。
推荐阅读
- lua - 为什么此功能在某些情况下有效,而在其他情况下无效?
- angular6 - 在 ANGULAR 6 控制台来源“http://localhost:4200”中出现错误已被 CORS 策略阻止
- angular - 参数化路由 /
- javascript - 为什么输出没有出现在循环的最后一步?
- php - 在服务器上找不到电子邮件中的密码重置链接
- docker - 使用我的本地计算机访问主机名 postgres docker
- json - 如何将 JSON 输入值读入 Terraform 脚本?
- angular - http请求中有400个错误请求,但在离子的邮递员中工作完美
- wordpress - 子主题中的 style.css 文件不起作用
- list - Haskell中的函数snd如何在过滤器中工作