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

lodash中flush的使用(debounce、throttle)

在项目的配置中,看到了一个请求,类似是这样的

import { throttle } from 'lodash-es'// 请求函数
async function someFetch(){const {data} = await xxx.post()return data
}// 节流函数
async function throttleFn(someFetch,1000)// 执行拿到数据函数
async function getDataFn(enforcement){return enforcement? await throttleFn.flush() : await throttleFn()
}

        逻辑很简单,因为有个节流函数1秒执行一次,所以接收了一个 enforcement 作为参数来让节流函数失效,让请求再强制执行一次。

        但你会发现,执行 getDataFn(true),请求函数 someFetch.flush() 并没有去发送请求,而直接执行getDataFn(),则可以发送请求。

原因如下:

someFetch.flush() 只会在 someFetch()执行的过程中去执行,单独执行someFetch.flush()是不会发送请求的,或许可以考虑改用以下这种写法

// 执行拿到数据函数
async function getDataFn(enforcement){if(enforcement){return ((await throttleFn()) && (await throttleFn.flush()))}return await throttleFn()
}

总结:在使用debounce 和 throttle 的时候使用flush()强制执行时,确保节流和防抖接受的函数正在执行过程中,flush()才会生效

http://www.lryc.cn/news/395630.html

相关文章:

  • 设计高并发秒杀系统:保障稳定性与数据一致性
  • 从源码到成品:直播电商与短视频带货APP的开发之路
  • C++OCR API减轻人们文字录入的负担
  • web安全基础名词概念
  • ctfshow-web入门-文件上传(web161、web162、web163)远程包含
  • 【Gradle】(三)详细聊聊依赖管理:坐标、依赖配置、依赖传递、依赖冲突
  • C#数据类型:object、var和dynamic的比较与应用
  • 【面试题】MySQL(第一篇)
  • SQL Server集成服务(SSIS):数据集成的瑞士军刀
  • 鸿蒙开发HarmonyOS NEXT (三) 熟悉ArkTs (上)
  • 值传递与引用传递:理解Java中的参数传递机制
  • Qt常用基础控件总结—带边框的部件(QFrame和QLabel)
  • 太多项会毁了回归
  • python的魔法方法
  • [Vue3 + TS + Vite] 获取网页选中内容的字符串格式或HTML格式
  • 线程安全的原因及解决方法
  • 微信零钱明细删除了还能恢复吗?图文教程解析
  • mp4视频太大怎么压缩不影响画质,mp4文件太大怎么变小且清晰度高
  • 【线程同步-2】
  • 【别再为可视化工具付费了!】财务报表免费制作软件,这款免费可视化工具的功能超乎想象
  • 【HTML入门】第五课 - 加粗和倾斜的字体们
  • 解决树形表格 第一列中文字没有对齐
  • 三级_网络技术_09_IP地址规划技术
  • 力扣1878.矩阵中最大的三个菱形和
  • ELB和VPC是云计算领域中的两个术语,通常与Amazon Web Services (AWS)相关联
  • YOLO-World实时开集检测论文阅读
  • LLM - 词向量 Word2vec
  • Tileserver GL中glyphs的使用
  • uniapp自动升级
  • java Pair怎么使用