23 lines
408 B
JavaScript
23 lines
408 B
JavaScript
export const frames = (fn) => {
|
|
let previousArgs;
|
|
let frameId = -1;
|
|
let lock = false;
|
|
|
|
return {
|
|
next(...args) {
|
|
previousArgs = args;
|
|
if (!lock) {
|
|
lock = true;
|
|
frameId = requestAnimationFrame(() => {
|
|
fn(...previousArgs);
|
|
lock = false;
|
|
});
|
|
}
|
|
},
|
|
cancel() {
|
|
cancelAnimationFrame(frameId);
|
|
lock = false;
|
|
},
|
|
};
|
|
};
|