perf: experiment with createLoop
This commit is contained in:
parent
e20c2c8a4d
commit
7ddab285f7
|
@ -1,13 +1,23 @@
|
|||
export const createLoop = (ticker, {frequency = 1 / 60, sampler = Date.now} = {}) => {
|
||||
export const createLoop = (
|
||||
ticker,
|
||||
{
|
||||
frequency = 1 / 60,
|
||||
sampler = window.performance.now.bind(window.performance),
|
||||
} = {},
|
||||
) => {
|
||||
let lastTime = sampler();
|
||||
let remain = 0;
|
||||
return setInterval(
|
||||
() => {
|
||||
const now = sampler();
|
||||
const elapsed = (now - lastTime) / 1000;
|
||||
remain += (now - lastTime) / 1000;
|
||||
lastTime = now;
|
||||
ticker(elapsed);
|
||||
while (remain > frequency) {
|
||||
ticker(frequency);
|
||||
remain -= frequency;
|
||||
}
|
||||
},
|
||||
1000 * frequency,
|
||||
3,
|
||||
);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user