RxJS之fromEvent学习

有情提示:

        阅读此博客前,可先阅读博客https://blog.csdn.net/qq_44327851/article/details/135251408对RxJS进行简单的了解。

概念:

   fromEvent 是 RxJS 中的一个操作符,用于将事件转换为可观察的对象。它的作用是创建一个可观察对象,该对象会监听指定事件源上特定类型的事件,并在事件发生时发出相应的数据。在 RxJS 中,事件源可以是 DOM 元素Node.js EventEmitterWebSocketWorker 支持事件的对象。

使用:

   eventSource 是事件源对象,eventType 是要监听的事件类型(如 click、input、scroll等)。

import { fromEvent } from 'rxjs';// 创建一个可观察对象来监听指定事件源上的特定类型事件
const eventObservable = fromEvent(eventSource, eventType);

使用场景:

        1.监听按钮的点击事件
import { fromEvent } from 'rxjs';// 获取按钮元素
const button = document.getElementById('myButton');// 创建一个可观察对象来监听按钮的点击事件
const clickObservable = fromEvent(button, 'click');// 订阅点击事件,并处理事件
clickObservable.subscribe((event) => {console.log('Button clicked');
});
        2.监听输入框的输入事件
import { fromEvent } from 'rxjs';// 获取输入框元素
const input = document.getElementById('myInput');// 创建一个可观察对象来监听输入框的输入事件
const inputObservable = fromEvent(input, 'input');// 订阅输入事件,并处理事件
inputObservable.subscribe((event) => {console.log('Input value changed: ', input.value);
});//输入后延迟一定时间之后才响应
inputObservable.pipe(debounceTime(500),throttleTime(1000)
).subscribe((inputValue) => {if(typeof inputValue === 'object') {inputValue = inputValue.target.value;}
}
        3.监听文档的滚动事件
import { fromEvent } from 'rxjs';// 创建一个可观察对象来监听文档的滚动事件
const scrollObservable = fromEvent(document, 'scroll');// 订阅滚动事件,并处理事件
scrollObservable.subscribe((event) => {console.log('Document scrolled');
});
        4.监听 WebSocket 事件
import { fromEvent } from 'rxjs';// 创建一个 WebSocket 连接
const socket = new WebSocket('wss://example.com');// 创建一个可观察对象来监听 WebSocket 的消息事件
const messageObservable = fromEvent(socket, 'message');// 订阅消息事件,并处理事件
messageObservable.subscribe((event) => {console.log('Received message from WebSocket: ', event.data);
});

        5.监听窗口的resize事件

例如:在窗口resize事件发生时,动态改变msg元素的宽度减去10,并且以字符串形式输出的效果

import { fromEvent } from 'rxjs';
import { map } from 'rxjs/operators';// 监听窗口resize事件
const resizeObservable = fromEvent(window, 'resize');// 订阅resize事件,并对事件进行处理
resizeObservable.pipe(map(() => {const width = this.msg.nativeElement.offsetWidth - 10;return width + 'px';})
).subscribe((widthString) => {console.log('Width: ', widthString);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握

可用性的定义 在探讨高可用架构之前,让我们以 O2 系统为例,解释一下何谓可用性。O2 是腾讯内部的一个广告投放系统,专注于提升投放效率、分析广告效果,拥有自动化广告投放、AIGC 自动化素材生产等多种功能。 其整体架构概览如下&…

Java最新技术介绍和分析 (202305)

说明:本文完成了2023年5月份,当时最新的LTS版本是Java17,本文在撰写时参考了美团技术团队和阿里JDK团队相关的文章,以及本文也引了用文章中的图片。在此表示感谢! Java版本火车 相信老牌的Java开发者和爱好者把Java的…

【技巧】IDEA 使用小技巧(三)

IDEA 使用小技巧(三) 配置目录Ctrl 鼠标方法缩小字体 配置目录 IDEA 在使用的过程中会在 C 盘的用户目录下写入相关配置,目录如下: "C:\Users\个人用户名\AppData\Local\JetBrains" "C:\Users\个人用户名\AppDa…

Java实现限流算法

限流算法是指在分布式系统中控制流量的一种方法。它用于防止系统被过多的请求拥塞而导致性能下降或崩溃。 常见的限流算法有以下几种: 固定窗口算法(Fixed Window Algorithm):将时间划分为固定的时间窗口,每个时间窗口…

Halcon顶帽运算与底帽运算的应用

Halcon顶帽运算与底帽运算的应用 文章目录 Halcon顶帽运算与底帽运算的应用1. 提取小的物件2. 校正非均匀光照 正如上文所说的,顶帽运算返回的像素部分是尺寸比结构元素小的,并且比较亮的局部小区域;底帽运算返回的像素部分是尺寸比结构元素小…

打造炫酷粒子效果的前端利器tsParticles

前端潮流速递 :打造炫酷粒子效果的前端利器tsParticles 在现代前端开发中,动画和视觉效果是吸引用户的关键元素之一。而实现炫酷而引人入胜的粒子效果,常常需要耗费大量的时间和精力。然而,有了 tsParticles,这一切变…

找不到pixman_region32_init代码实现的原因

我们在pixman直接查找pixman_region32_init实现会找不到&#xff0c;原因在于PREFIX宏 1、在pixman-region32.c和pixman-region16.c有很大关系&#xff0c;以pixman-region32.c为例 #ifdef HAVE_CONFIG_H #include <pixman-config.h> #endif #include "pixman-priva…

网络安全—PGP8.1软件应用

文章目录 安装PGP8了解工作原理 PGP使用准备工作加密与解密加密者视角&#xff08;发送方&#xff09;接收者视角&#xff08;接收方&#xff09; 签名签名方&#xff08;发送方&#xff09;验证签名方&#xff08;接收方&#xff09; 补充加密签名一段文字签名后的格式 验证解…

Java中关键词strictfp有什么作用?

在Java中&#xff0c;关键词strictfp用于声明一个方法、类或接口是严格遵守浮点数计算规范的。 具体作用包括&#xff1a; 保证浮点数计算的结果在不同平台上是一致的&#xff0c;避免由于浮点数计算的不精确性导致的结果不确定性。 指定了严格的浮点数计算规则&#xff0c;禁…

186.【2023年华为OD机试真题(C卷)】整数编码(JavaPythonC++JS实现)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】整数编码(Java&…

K8s 中Pod无法启动5个常见问题总结

一、ImagePullBackOff Kubernetes pod 无法启动的原因之一是运行时无法从注册表中检索容器镜像。换句话说&#xff0c;pod 不会启动&#xff0c;因为至少有一个在清单中指定的容器没有启动。 当 pod 遇到此问题时&#xff0c;kubectl get pods 命令会将 pod 的状态显示为Image…

【解决】Unity 设置跨设备分辨率表现

开发平台&#xff1a;Unity 2018版本以上 开发语言&#xff1a;CSharp 编程平台&#xff1a;Visual Studio 2022   问题描述 使用 UnityEngine.dll 中关于设置分辨率的方法时&#xff0c;无法满足应用以设定分辨率进行屏幕显示问题。因而造成画面不同程度的拉伸情况。而这种情…

机器学习-基于Word2vec搜狐新闻文本分类实验

机器学习-基于Word2vec搜狐新闻文本分类实验 实验介绍 Word2vec是一群用来产生词向量的相关模型&#xff0c;由Google公司在2013年开放。Word2vec可以根据给定的语料库&#xff0c;通过优化后的训练模型快速有效地将一个词语表达成向量形式&#xff0c;为自然语言处理领域的应…

threejs中group下绑定唯一key导致parten丢失的问题

技术架构 reactthreejsreact-three/dreireact-three/fiberuse-gesture/react 场景 一个分组下有一个Line&#xff0c;当使用gesture的useDrag触发事件以后&#xff1a; import { Line } from react-three/drei import { ThreeEvent, useFrame } from react-three/fiber imp…

C# StringBuilder对比string的优点和15大案例

文章目录 StringBuilder和String 对比1. **循环内字符串连接**2. **构建大型日志消息**3. **格式化长字符串**4. **SQL 查询构造**5. **从文件读取并合并行**6. **拼接数组元素**7. **格式化电子邮件模板**8. **处理用户输入流**9. **JSON 或 XML 格式的序列化与构建**10. **动…

leetcode算法题之递归--二叉树中的深搜总结

递归的本质是找重复的子问题 文章目录 1.计算布尔二叉树的值2.从根节点到叶节点数字之和3.二叉树剪枝4.验证二叉搜索树5.二叉搜索树中第K小的元素6.二叉树的所有路径 1.计算布尔二叉树的值 计算布尔二叉树的值 class Solution { public:bool evaluateTree(TreeNode* root) …

Spring Cloud + Vue前后端分离-第9章 大文件断点续与极速秒传

源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 ​​​​​​Spring Cloud Vue前后端分离-第9章 大文件断点续与极速秒传 作为一个视频网站&#xff0c;一个文件小则几十M&#xff0c;大则上G&#xff0c;上传一个大文件受网络影响很大&#xff0c;文…

【网络技术】【Kali Linux】Wireshark嗅探(四)域名系统(DNS)

一、实验目的 本次实验使用wireshark流量分析工具进行网络嗅探&#xff0c;旨在了解域名系统&#xff08;DNS&#xff09;的工作原理。 二、域名系统概述 简单来说&#xff0c;域名系统&#xff08;Domain Name System, DNS&#xff09;将域名&#xff08;可以理解为“网址”…

Prometheus-AlertManager 邮件告警

环境,软件准备 本次演示环境&#xff0c;我是在虚拟机上安装 Linux 系统来执行操作&#xff0c;以下是安装的软件及版本&#xff1a; System: CentOS Linux release 7.6Docker: 24.0.5Prometheus: v2.37.6Consul: 1.6.1 docker 安装prometheus,alertmanage,说明一下这里直接将…