A tiny frame scheduler for performantly batching reads and renders.
Segregating actions that read and write to the DOM will avoid layout thrashing.
npm install framesync --saveThe Framesync render loop executes four sequential steps, once per frame.
frameStartframeUpdateframeRenderframeEnd
Developers can set any function to run at any of these steps using the on and cancel callbacks:
onFrameStart,cancelOnFrameStartonFrameUpdate,cancelOnFrameUpdateonFrameRender,cancelOnFrameRenderonFrameEnd,cancelOnFrameEnd
Framesync also exports some time-measurement methods:
currentTime: The current time as measured by the host platform's most accuratenowfunction.currentFrameTime: The time the currentrequestAnimationFramewas initiated.timeSinceLastFrame: The duration between the previous frame and the currentcurrentFrameTime
import {
timeSinceLastFrame,
onFrameStart,
cancelFrameStart
} from 'framesync';
function logTimeSinceLastFrame() {
console.log(timeSinceLastFrame());
onFrameStart(logTimeSinceLastFrame);
}
onFrameStart(logTimeSinceLastFrame);
function stopLogging() {
cancelOnFrameStart(logTimeSinceLastFrame);
}
setTimeout(stopLogging, 5000);