javascript - 如何将要在下一帧调用的 MicroTask 排队?
问题描述
在不是 NodeJS 的现代浏览器环境中运行:
有没有办法让 MicroTask 在下一帧中被调用?
MicroTask 队列在 Task 之后被刷新,这是在任何 requestAnimationFrame 回调之前。
在任何 rAF 回调之后,也会再次刷新 MicroTask 队列。
从 rAF 回调中请求的任何 rAF 回调确实会在下一帧发生,但仅在完成任何任务或微任务之后才会发生。
setTimeout 将任务排队,但不能保证在下一帧执行。
requestIdleCallback 的触发也是不可预测的。
ResizeOberver 听起来可能会在下一帧触发,但我不确定,但它仅在 Chrome 中受支持,并且 polyfill 将基于 rAF 或超时。
解决方案
您提到了裸 requestIdleCallback 和 rAF 的问题。React 具有声称可以解决这些问题的内置库。看看:https ://github.com/facebook/react/blob/43a137d9c13064b530d95ba51138ec1607de2c99/packages/react-scheduler/src/ReactScheduler.js
推荐阅读
- visual-studio - 在 Visual Studio Community 7 中,如何阻止 Tab 创建空间?
- bash - 如何将 HDFS 小文件合并为一个大文件?
- azure - Azure 搜索服务与最新 Azure SQL 数据库实例中的全文搜索?
- google-apps-script - 谷歌脚本从谷歌趋势中导入数据
- python - python中带有scrapy和mongodb的异步HTTP服务器
- kubernetes - 无法引导(云类型:localhost)- 使用 LXD/Conjure-up 在本地安装 Kubernetes 集群时出错
- java - 按照文件中定义的顺序获取所有 JSON 密钥
- azure - 技术堆栈问题:聊天机器人到数据库以显示分析和图表
- spring - Spring mvc 无法接收一组字符串
- spring-security - Spring SAML 扩展中的属性语句生成的元数据