UNPKG

@worker-tools/deno-kv-storage

Version:

An implementation of the StorageArea (1,2,3) interface for Deno with an extensible system for supporting various database backends.

56 lines 1.58 kB
"use strict"; // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. Object.defineProperty(exports, "__esModule", { value: true }); exports.debounce = void 0; /** * Creates a debounced function that delays the given `func` * by a given `wait` time in milliseconds. If the method is called * again before the timeout expires, the previous call will be * aborted. * * ``` * import { debounce } from "./debounce.ts"; * * const log = debounce( * (event: Deno.FsEvent) => * console.log("[%s] %s", event.kind, event.paths[0]), * 200, * ); * * for await (const event of Deno.watchFs("./")) { * log(event); * } * ``` * * @param fn The function to debounce. * @param wait The time in milliseconds to delay the function. */ // deno-lint-ignore no-explicit-any function debounce(fn, wait) { let timeout = null; let flush = null; const debounced = ((...args) => { debounced.clear(); flush = () => { debounced.clear(); fn.call(debounced, ...args); }; timeout = setTimeout(flush, wait); }); debounced.clear = () => { if (typeof timeout === "number") { clearTimeout(timeout); timeout = null; flush = null; } }; debounced.flush = () => { flush === null || flush === void 0 ? void 0 : flush(); }; Object.defineProperty(debounced, "pending", { get: () => typeof timeout === "number", }); return debounced; } exports.debounce = debounce; //# sourceMappingURL=debounce.js.map