如何将要在下一帧调用的MicroTask排队?

时间:2018-11-17 11:14:44

标签: javascript

在不是NodeJS的现代浏览器环境中运行:

是否可以将要在下一帧中调用的MicroTask排队?

MicroTask队列在Task之后(在所有requestAnimationFrame回调之前)被刷新。

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

从rAF回调中请求的任何rAF回调的确会在下一帧发生,但是仅在完成任何Task或MicroTasks之后。

setTimeout将任务排队,但是不能保证在下一帧执行。

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

虽然我不确定ResizeOberver听起来可能会在下一帧触发,但它仅在Chrome中受支持,并且polyfills将基于rAF或超时。

1 个答案:

答案 0 :(得分:1)

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