在非 NodeJS 的现代浏览器环境中运行:
有没有办法将 MicroTask 排队,以便在下一帧中调用?
MicroTask 队列在任务之后被刷新,这是在任何 requestAnimationFrame 回调之前。
在任何 rAF 回调之后,MicroTask 队列也会再次刷新。
从 rAF 回调中请求的任何 rAF 回调确实会在下一帧发生,但只会在任何任务或微任务完成之后发生。
setTimeout 将任务排队,但不能保证在下一帧执行。
requestIdleCallback 的触发也是不可预测的。
虽然我不确定,但 ResizeOberver 听起来可能会在下一帧触发,但它仅在 Chrome 中受支持,并且 polyfills 将基于 rAF 或超时。
最佳答案
您提到了裸requestIdleCallback 和rAF 的问题。 React 内置库声称可以解决这些问题。查看:https://github.com/facebook/react/blob/43a137d9c13064b530d95ba51138ec1607de2c99/packages/react-scheduler/src/ReactScheduler.js
关于javascript - 如何排队要在下一帧调用的 MicroTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53350671/