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 --save
The Framesync render loop executes four sequential steps, once per frame.
frameStart
frameUpdate
frameRender
frameEnd
Developers can set any function to run at any of these steps using the on
and cancel
callbacks:
onFrameStart
,cancelOnFrameStart
onFrameUpdate
,cancelOnFrameUpdate
onFrameRender
,cancelOnFrameRender
onFrameEnd
,cancelOnFrameEnd
Framesync also exports some time-measurement methods:
currentTime
: The current time as measured by the host platform's most accuratenow
function.currentFrameTime
: The time the currentrequestAnimationFrame
was 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);