UNPKG

zmp-ui

Version:

Zalo Mini App framework

50 lines (48 loc) 1.06 kB
var raf = function raf(callback) { return +setTimeout(callback, 16); }; var caf = function caf(num) { return clearTimeout(num); }; if (typeof window !== "undefined" && "requestAnimationFrame" in window) { raf = function raf(callback) { return window.requestAnimationFrame(callback); }; caf = function caf(handle) { return window.cancelAnimationFrame(handle); }; } var rafUUID = 0; var rafIds = new Map(); function cleanup(id) { rafIds["delete"](id); } export default function wrapperRaf(callback, times) { if (times === void 0) { times = 1; } rafUUID += 1; var id = rafUUID; function callRef(leftTimes) { if (leftTimes === 0) { // Clean up cleanup(id); // Trigger callback(); } else { // Next raf var realId = raf(function () { callRef(leftTimes - 1); }); // Bind real raf id rafIds.set(id, realId); } } callRef(times); return id; } wrapperRaf.cancel = function (id) { var realId = rafIds.get(id); cleanup(realId); return caf(realId); };