UNPKG

zmp-ui

Version:

Zalo Mini App framework

54 lines (51 loc) 1.12 kB
"use strict"; exports.__esModule = true; exports["default"] = wrapperRaf; 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); } 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); };