巧用setTimeout和clearTimeout 对输入事件进行优化处理

在处理用户输入事件如实时搜索时,避免频繁请求导致服务端压力过大。通过在用户暂停输入500毫秒后调用请求,利用setTimeout设置延迟执行并用clearTimeout清除旧的定时器,确保只用最新输入值发起请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目背景

前一阵做了一个需求,大概是用户在输入框输入URL链接时,前端需要对链接实时搜索并与后台数据库匹配。如果发现链接是通过我们的工具箱生成落地页的,就可以接着选择该落地页链接匹配的转化事件,进行后续广告的出价设置。

问题描述

如果按照常规的处理,就是输入框input组件加个类似onkeydown这种监听事件,如果事件一被调用,就触发请求。但是这会有个弊端,用户通常打字很快,远比服务端的响应要快的多。如果onkeydown一触发就调用请求,会造成发送很多不必要的请求,造成服务端压力过大。所以比较好的情况是,在用户暂停输入的时候,用最新的input输入值来调用请求。

解决技巧

利用setTimeout(callback, milliseconds) 和 clearTimeout(timeout)来解决

  • setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。其返回值是一个Number,代表timer的ID。
  • clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout。

首先我们定义一个timeoutURL变量

// An highlighted block
let timeoutURL = null;

之后利用setTimeout及clearTimeout优化onChange函数。每当用户输入变化的时候,onLandingPageUrlChange函数会被调用。这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值