Logo of perfect-debounce

perfect-debounce

防抖返回 Promise 和异步函数。

改进的防抖函数,支持 Promise。

功能特性

  • 经过充分测试的防抖实现
  • 原生 Promise 支持
  • 在 Promise 正在解析时避免重复调用
  • 可配置的 trailingleading 行为

用法

安装包

# npm
npm install perfect-debounce

# yarn
yarn add perfect-debounce

# pnpm
pnpm add perfect-debounce

导入

// ESM
import { debounce } from 'perfect-debounce'

// CommonJS
const { debounce } = require('perfect-debounce')

防抖函数

const debounced = debounce(async () => {
  // Some heavy stuff
}, 25)

调用 debounced 时,它将按照配置至少等待 25ms,然后才实际调用我们的函数。这有助于避免多次调用。

为避免首次等待,我们可以设置 leading: true 选项。如果在此之前没有其他调用,函数将立即被调用。

const debounced = debounce(async () => {
  // Some heavy stuff
}, 25, { leading: true })

如果执行异步函数的时间超过防抖值,重复调用仍将被阻止,并且会发生最后一次调用。要禁用此行为,我们可以设置 trailing: false 选项。

const debounced = debounce(async () => {
  // Some heavy stuff
}, 25, { trailing: false })

💻 开发

  • 克隆此仓库
  • 使用 corepack enable 启用 Corepack (Node.js < 16.10 请使用 npm i -g corepack)
  • 使用 pnpm install 安装依赖项
  • 使用 pnpm dev 运行交互式测试

许可

用心制作 💛

基于 sindresorhus/p-debounce

根据 MIT 许可证 发布。