定时器setTimeout实现函数节流

问题描述

文字输入查询的keyup或oninput事件,实现实时查询功能。
在用户输入过程中,用户可能只想需要 '小' 字的查询结果,但是以上两个事件会触发'x'、'i'、'a'、'o'、'小',一共5次。
其中某个查询的匹配结果数据量大,返回速度慢,就会覆盖掉最终'小'字的查询结果。

解决方案

最开始我用函数节流或者是函数防抖的方法处理,在调试过程中报错。
原因是vue 2.0 移除了 debounce 属性,具体请查看从 Vue 1.x 迁移文档

最后手写了一个定时器,解决问题~~

<template>
  <div>
    <input type="text" @keyup="searchMedicine">
  </div>
</template>

<script>

  export default {
    data() {
      return {
        changeTime: new Date().getTime()
      }
    },
    methods: {
      searchMedicine() {
        this.changeTime = new Date().getTime()
         // 定时器    过滤密集输入
        setTimeout(() => {
          if (new Date().getTime() - this.changeTime >= 1000) {
            this.getDatas()
          }
        }, 1000)
      },
      getDatas() {
         // 这里写请求
         console.log('我是请求返回结果~~~~')
      }
    }
  }
</script>

总结

写的很粗糙,希望大家指点。

转载于:https://www.cnblogs.com/fanyx/p/8744922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值