当前位置: 首页 > news >正文

防抖函数 debounce debouncePromise

普通函数版

/*** 函数防抖* @param fn* @param ms* @returns*/
export const debounce = (fn: Function, ms = 300) => {let timeoutId: ReturnType<typeof setTimeout>return function (this: any, ...args: any[]) {clearTimeout(timeoutId)timeoutId = setTimeout(() => {fn.apply(this, args)}, ms)}
}

如果用普通的 debounce 去防抖 promise 类型的异步函数,是获取不到返回值的。此时需要使用 Promise 版的防抖函数

Promise 版

/*** 防抖Promise* @param fn* @param delay* @returns*/
export function debouncePromise(fn: (...arg0: any[]) => Promise<unknown>, delay = 300) {let pendingPromise: ReturnType<typeof setTimeout>return function (...args: any[]) {if (pendingPromise) {clearTimeout(pendingPromise)}return new Promise((resolve, reject) => {pendingPromise = setTimeout(() => {fn(...args).then(resolve).catch(reject)}, delay)})}
}

http://www.mrgr.cn/news/15824.html

相关文章:

  • 【面试经验】美团产品校招面试分享
  • Tensorflow实现深度学习8:猫狗识别
  • 企业海外新闻稿发布的转型之路:从纸媒到数字化
  • HarmonyOS开发实战( Beta5版)滑动白块问题解决最佳实践
  • 数据库水平分表方案
  • vue3中vite基于vite-plugin-html的多入口打包
  • npm install速度慢,install超时报错----npm换源;npm i npm install区别
  • 系统功能性能优化:从问题定位到解决方案的系统性分析
  • 文字模型训练分析评论(算法实战)
  • 【Test 006】用图形化和代码的方式实现简单的Qt程序
  • 代码随想录算法训练营第三十一天|56. 合并区间 738.单调递增的数字
  • python脚本开头怎么写
  • PTA L1-028 判断素数
  • 指针进阶(多级指针)
  • C语言入门基础知识(持续更新中)
  • 第十四章 rust集合库介绍
  • JS模块化
  • Redis缓存穿透、缓存击穿与缓存雪崩的详细讲解和案例示范
  • Django+Vue花卉商城系统的设计与实现
  • 逐行输出三个顺序表中共同存在的元素