前端在请求数据时使用节流来防止多个重复请求

先了解防抖和节流的区别:
两者的区别这位博主讲得非常仔细

在写项目的过程中,经常会遇到这样一种场景:
页面加载时,遇到大量的数据需要显示,常常使用上拉加载更多数据,从而实现数据的批量显示。每次上拉的时候,浏览器应该发送一次请求,获取最新的数据。
但是会出现这样一种情况:不停地上拉加载,上一个请求还没有成功返回数据,下一个请求又发出去了,导致请求越来越多,页面却还没显示数据,容易造成浏览器卡死。

解决方法:使用节流处理。在发送请求之前,先判断当前是否有其它请求在发送,如果有,则不发起下一个请求,等到上个请求已经成功返回数据了,才能发起下一个请求。
定义一个变量doneLoading,称之为节流阀,当它为true时表示请求已经发送完成,为false时表示请求正在发送。

具体实现

list: [],
doneLoading: true, // 节流阀
// ...

getList: async function () {
    // 如果当前请求未结束,则等待请求完成
    if (!this.doneLoading) {
      return
    }
    
    // 请求正在发送
    this.doneLoading = false
    const res = await request('/list', {page: this.page})
    if(res.code !== 200) {
      alert('数据加载失败!')
      return 
    }
    
    this.list = this.list.concat(res.result)
    // 成功返回数据,请求完成
    this.doneLoading = true
  },
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端防抖节流使用场景很多。其中一种常见的场景是在用户输入搜索框进行搜索提示。当用户快速输入,如果每次输入都立即触发搜索请求,会造成过多的请求并降低性能。这可以使用防抖来延迟执行搜索请求,只当用户停止输入一段间后才触发搜索请求,避免不必要的请求。 另一个使用场景是在页面滚动进行懒加载。当用户滚动页面,如果每次滚动都立即加载图片或数据,会造成页面卡顿。通过使用节流,可以控制在一定间内只触发一次加载,提高页面的流畅度。 此外,防抖节流还可以应用于按钮点击事件,防止用户频繁点击按钮导致重复提交或执行多次操作。通过设置适当的延迟间,可以确保在用户点击按钮后只执行一次操作。 总之,前端防抖节流使用场景包括搜索提示、懒加载和按钮点击事件等,通过延迟执行或控制触发频率,可以提升用户体验和页面性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [前端节流与防抖的实景应用](https://blog.csdn.net/qq_52022825/article/details/125057737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [防抖与节流的封装函数与使用详解](https://download.csdn.net/download/weixin_38695061/14888196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值