UNPKG

@deep-foundation/deepcase

Version:

[![Gitpod](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/deep-foundation/deepcase) [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label&color=purple)](https://discord.gg/deep-

42 lines 1.56 kB
import { useEffect, useRef, useState } from "react"; export function useDelayedInterval(callback, delay = 1000, deps = []) { const intervalReadyRef = useRef(true); const timeoutRef = useRef(); useEffect(() => { const interval = setInterval(() => { if (intervalReadyRef.current) { intervalReadyRef.current = false; callback().then(() => { clearTimeout(timeoutRef.current); timeoutRef.current = setTimeout(() => { intervalReadyRef.current = true; }, delay); }, () => { clearTimeout(timeoutRef.current); timeoutRef.current = setTimeout(() => { intervalReadyRef.current = true; }, delay); }); } }, delay); return () => { clearTimeout(timeoutRef.current); clearInterval(interval); }; }, deps); } export function useDelayRefetch(query, variables, delay = 1000) { const useDelayedIntervalRef = useRef(); const qRef = useRef(); qRef.current = query; useDelayedIntervalRef.current = variables; const [results, setResults] = useState(); useDelayedInterval(() => new Promise((res) => { qRef.current.refetch(useDelayedIntervalRef.current.variables).then((r) => { setResults(r); res(undefined); }); })); return results; } //# sourceMappingURL=use-delayed-interval.js.map