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

医药网站如何做网络推广怎样做推广是免费的

医药网站如何做网络推广,怎样做推广是免费的,粉丝社区网站怎么做,普工找工作哪个网站好问题背景: οninput"searchSites()” 文本框输入时,实时调用后端接口查询。输入过程中,会触发多次查询。最后一次的查询被前面的查询覆盖了。 方案: 可以通过 防抖(Debounce) 和 请求中止 两种技术结…

问题背景:

οninput="searchSites()” 文本框输入时,实时调用后端接口查询。输入过程中,会触发多次查询。最后一次的查询被前面的查询覆盖了。

方案:

可以通过 防抖(Debounce)请求中止 两种技术结合解决这个问题。以下是具体实现方案:


解决方案代码

<input type="text" oninput="debouncedSearchSites()" /><script>
// 1. 防抖函数(核心工具)
function debounce(func, delay = 300) {let timeoutId;return (...args) => {clearTimeout(timeoutId);timeoutId = setTimeout(() => func.apply(this, args), delay);};
}// 2. 请求中止控制器
let abortController = null;// 3. 实际搜索函数(带中止逻辑)
async function searchSites() {// 如果已有未完成的请求,立即中止if (abortController) {abortController.abort();}// 创建新的中止控制器abortController = new AbortController();try {const searchTerm = event.target.value.trim();if (!searchTerm) return;// 发送带中止功能的请求const response = await fetch(`/api/search?q=${searchTerm}`, {signal: abortController.signal});const results = await response.json();updateResults(results);} catch (err) {if (err.name !== 'AbortError') {console.error('Search failed:', err);}}
}// 4. 创建防抖版本
const debouncedSearchSites = debounce(searchSites);
</script>

技术原理说明

1. 防抖机制(Debounce)
  • 作用:将高频触发的事件(如输入)合并为间隔固定时间(默认300ms)执行一次
  • 实现逻辑
    • 每次输入时清除前一个定时器
    • 只有用户停止输入超过设定时间才会真正触发搜索
2. 请求中止(AbortController)
  • 作用:强制取消未完成的旧请求
  • 实现逻辑
    • 每次发起新请求前,中止上一个未完成的请求
    • 使用 signal 参数将请求与控制器绑定

优化效果对比

场景原始方案优化方案
输入 “apple”触发5次请求(a, ap, …)仅触发1次最终请求
网络延迟较高时旧结果可能覆盖新结果始终显示最新搜索结果
服务器压力多次无效请求仅发送必要请求

扩展优化建议

1. 添加加载状态提示
let isLoading = false;async function searchSites() {if (isLoading) return;isLoading = true;try {// ...原有逻辑...updateResults(results);} finally {isLoading = false;}
}
2. 最小搜索长度限制
if (searchTerm.length < 2) return;
3. 错误重试机制
let retryCount = 0;
const MAX_RETRIES = 3;async function searchSites() {// ...中止逻辑...try {// ...请求逻辑...} catch (err) {if (retryCount < MAX_RETRIES) {retryCount++;debouncedSearchSites(); // 自动重试}}
}

最终效果

  1. 用户输入时不会频繁触发请求
  2. 始终显示最后一次完整输入的搜索结果
  3. 自动取消无效的中间请求
  4. 支持网络异常时的友好处理

可直接复制代码到项目中,建议根据实际API地址修改 /api/search 路径。

http://www.dtcms.com/wzjs/157549.html

相关文章:

  • 甘肃省城乡建设厅网站首页网络营销的优缺点
  • 怎么做网站赚做神马seo快速排名软件
  • 临河做网站上百度推广的网站要多少钱
  • 江阴 网站开发广州seo运营
  • 建设企业银行网站多少南昌seo代理商
  • 深圳做网站建设比较好的公司百度一下首页问问
  • 职友集一家做公司点评的网站百度网址大全首页链接
  • 上海公共信息服务平台百度seo推广是什么
  • iis做网站主目录选哪里如何做好推广
  • 药品网站建设女教师遭网课入侵视频大全集
  • 硬盘做免费嗳暧视频网站企业老板培训课程
  • 网站建设施工方案全国最新疫情最新消息
  • 网站布局模版网站排名优化工具
  • 西樵网站开发35个成功的市场营销策划案例
  • 对文化传播网站建设的建议郑州seo外包服务
  • wordPress主题模板站百度提交收录
  • 企业怎么建设网站首页百度seo优化是做什么的
  • 深圳营销型网站建设 龙华信科比较好的搜索引擎
  • 上海快速建站微信朋友圈的广告怎么投放
  • 有个新网站专门做外贸的叫什么微信朋友圈广告在哪里做
  • 怎么做私服发布网站网页设计模板图片
  • wordpress表格线seo技术分享免费咨询
  • 帝国cms调用网站地址淘宝怎么优化关键词排名
  • 嘉兴高端网站建设门户网站排行榜
  • wordpress 仿简书模板优化营商环境的金句
  • 中山企业网站建设方案深圳互联网公司50强
  • 国外的外贸b2b网站有哪些怎么自己建网站
  • 做海报有什么素材网站知乎seo教程视频
  • app制作定制外包服务商e零基础seo入门教学
  • 成都网站建设开发站长之家seo一点询