angular请求的防抖(debounce)

2023-11-08

在开发项目过程中,我们会遇到这样的场景:

当用户在搜索框中输入名字时,当用户输入完毕后,自动发送搜索请求,实时响应;而不是多按一个按钮或者回车键。

如果按照常规思路,我们会绑定inputkeyup事件,每次击键后,执行相对应的请求函数。

但是,如果每次击键都发送一次请求,会造成请求过多,成本太昂贵了。 最好能等到用户停止输入时才发送请求

那么,使用 RxJS 的操作符就能轻易实现它,参见下面的代码片段(search.component.ts):

withRefresh = false;
packages$: Observable<NpmPackageInfo[]>;
private searchText$ = new Subject<string>();
 
search(packageName: string) {
  this.searchText$.next(packageName);
}
 
ngOnInit() {
  this.packages$ = this.searchText$.pipe(
    debounceTime(500),
    distinctUntilChanged(),
    switchMap(packageName =>
      this.searchService.search(packageName, this.withRefresh))
  );
}

The searchText$ is the sequence of search-box values coming from the u

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angular请求的防抖(debounce) 的相关文章

随机推荐

  • 链表问题处理

    今天主要是对一些链表相关问题的理解和处理 下面所有问题处理的都是这种链表 struct ListNode int val struct ListNode next 话不多说 我直接进入正题 1 删除链表中等于给定值 val 的所有节点 给你
  • 【音效处理】Reverb 混响算法简介

    系列文章目录 Delay Line 简介及其 C C 实现 LFO 低频振荡器简介及其 C C 实现 音效处理 Delay Echo 简介 音效处理 Vibrato 简介 文章目录 系列文章目录 一 混响 二 人工混响 三 数字混响算法 3
  • 最大化TensorFlow* CPU性能

    用户可以在v2 5之后的官方x86 64 TensorFlow 设置环境变量TF ENABLE ONEDNN OPTS 1来启用这些CPU优化 export TF ENABLE ONEDNN OPTS 1 大多数建议都适用于官方x86 64
  • 在有NVIDIA显卡的机器上安装Ubuntu 18.04 LTS的一些建议

    在装有NVIDIA显卡的机器上安装Ubuntu 18 04 LTS的一些建议 如果安装途中出现问题 导致不能正常进入系统 请看以下步骤 一 编辑Grub Ubuntu的引导程序 二 root下更改 三 重启进入系统 下载驱动 如果安装途中出
  • Raven2渗透

    1 实训目的 通过此次实验来学习对Raven2的渗透 Raven 2是中级boot2root VM 有四个要捕获的标志 在多次破坏之后 Raven Security采取了额外的措施来加固其Web服务器 以防止黑客 找到四个flag 学习一些
  • /etc/login.defs配置文件详解

    etc login defs 文件是用来定义创建用户时需要的一些用户配置信息 如创建用户时 是否需要家目录 UID和GID的范围 用户及密码的有效期限 家目录的权限 密码加密方式等等
  • SpringBoot开发使用篇(2)—数据层解决方案

    目录 一 数据层解决方案 1 1 SQL 1 1 1 数据源配置 Hikari 1 1 2 持久化技术 JdbcTemplate 1 1 3 H2数据库 1 2 NoSQL 1 2 1 Redis 1 2 2 Mongodb 1 2 3 E
  • 链式法则

    2个事件同时发生的概率 P a b P a b P b 其中 P a b 表示 a和b事件同时发生的概率 P a b 是一个条件概率 表示在b事件发生的条件下 a发生的概率 3个事件的概率链式调用 P a b c P a b c P b c
  • 三、Linux网络编程:Socket编程-网络模型

    3 Socket编程 网络模型 3 1 OSI七层模型 图解 每层的功能 模型 功能 物理层 比特流传输 数据链路层 网络控制 链路纠错 网络层 寻址 路由 传输层 建立主机端到端的连接 会话层 建立 维护和管理会话 表示层 格式转化 加密
  • 解决sqlplus /as sysdba登陆oracle无效

    安装完oracle 然后执行完下面的自动配置脚本后 没有任何地方设置过密码 etc init d oracledb ORCLCDB 19c configure 在这个命令执行完成后 会提醒查看完整日志的地方 Look at the log
  • C语言100例 第一天习题练习

    C语言中基本的输入与输出 例题1 输入两个正整数a和b 输出a b的值 其中a b 10000 include
  • Centos7 开机卡死在桌面

    问题 Centos7 开机死卡成了这样 一动不动 如下图 原因 一般来说是一些开机自启的东西使得Centos卡死 有可能是在 etc rc d rc local文件里加入的脚本 也有可能 etc fstab文件里面自动挂载的硬盘 解决方法
  • 【自然语言处理】情感分析(三):基于 Word2Vec 的 LSTM 实现

    情感分析 三 基于 Word2Vec 的 LSTM 实现 本文是 情感分析 系列的第 3 3 3 篇 前两篇分别是 自然语言处理 情感分析 一 基于 NLTK 的 Naive Bayes 实现 自然语言处理 情感分析 二 基于 scikit
  • jmeter调试错误大全

    一 前言 在使用jmeter做接口测试的过程中大家是不是经常会遇到很多问题 但是无从下手 不知道从哪里开始找起 对于初学者而言这是一个非常头痛的事情 这里结合笔者的经验 总结出以下方法 二 通过查看运行日志调试问题 写好脚本后 可以先试着运
  • 【保姆级】Python最新版3.11.1开发环境搭建,看这一篇就够了(适用于Python3.11.2安装)

    工欲善其事必先利其器 在使用Python开发程序之前 在计算机上搭建Python开发环境是必不可少的环节 目前Python最新稳定版本是3 11 1 且支持到2027年 如下图所示 本文手把手带你从0 到1搭建Python最新版3 11 1
  • 如何在Mac上远程控制另一台Mac

    1 先请在苹果 Mac 电脑上的 系统偏好设置 窗口中打开 共享 功能 2 接着在共享窗口中的左侧点击启用 屏幕共享 选项 3 当屏幕共享功能打开以后 请点击 电脑设置 按钮 4 随后请勾选二个选项 VNC 显示程序可以使用密码控制屏幕 并
  • 异步赠书:9月重磅新书升级,本本经典

    本期活动已结束 新活动地址 http blog csdn net epubit17 article details 78210459 获奖读者名单 如下 领取赠书步骤 1 加入异步社区活动QQ群439467328 2 在下方地址中填写收件信
  • java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 的解决

    jetty 9 嵌入式开发时 启动正常 但是页面一浏览就报错如下 java lang NoSuchMethodError javax servlet http HttpServletRequest isAsyncStarted Z 原因 j
  • 用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

    一 i18n的安装 这个地方要注意自己的vue版本和i1n8的匹配程度 如果是vue2点几 记得安装i18n的 8版本 不然会自动安装的最新版本 后面会报错哦 查询了下资料 好像最新版本是适配的vue3 npm install vue i1
  • angular请求的防抖(debounce)

    在开发项目过程中 我们会遇到这样的场景 当用户在搜索框中输入名字时 当用户输入完毕后 自动发送搜索请求 实时响应 而不是多按一个按钮或者回车键 如果按照常规思路 我们会绑定input的keyup事件 每次击键后 执行相对应的请求函数 但是