UNPKG

zmp-ui

Version:

Zalo Mini App framework

30 lines 851 B
import React from "react"; export default (function (callback, buffer) { var calledRef = React.useRef(false); var timeoutRef = React.useRef(null); function cancelTrigger() { if (timeoutRef.current) window.clearTimeout(timeoutRef.current); } function trigger(force) { cancelTrigger(); if (!calledRef.current || force === true) { if (callback() === false) { // Not delay since callback cancelled self return; } calledRef.current = true; timeoutRef.current = window.setTimeout(function () { calledRef.current = false; }, buffer); } else { timeoutRef.current = window.setTimeout(function () { calledRef.current = false; trigger(); }, buffer); } } return [trigger, function () { calledRef.current = false; cancelTrigger(); }]; });