如何对要在下一帧调用的MicroTask进行排队



在现代浏览器环境中运行而非NodeJS:

有没有办法将要在下一帧中调用的MicroTask排队?

MicroTask队列在Task之后刷新,也就是在任何requestAnimationFrame回调之前。

MicroTask队列也会在任何rAF回调之后再次刷新。

从rAF回调中请求的任何rAF回调都会发生在下一帧,但只有在完成任何任务或MicroTasks之后。

setTimeout使Task排队,但不能保证在下一帧执行。

requestIdleCallback的触发也是不可预测的。

ResizeObever听起来可能会在下一帧启动,尽管我不确定,但它只在Chrome中受支持,并且polyfill将基于rAF或超时。

您提到了裸requestIdleCallback和rAF的问题。React内置了一个库,声称可以解决这些问题。看看:https://github.com/facebook/react/blob/43a137d9c13064b530d95ba51138ec1607de2c99/packages/react-scheduler/src/ReactScheduler.js

最新更新