RxJS之fromEvent学习
2024-01-03 19:09:20
有情提示:
? ? ? ? 阅读此博客前,可先阅读博客https://blog.csdn.net/qq_44327851/article/details/135251408对RxJS进行简单的了解。
概念:
? ?fromEvent
?是 RxJS 中的一个操作符,用于将事件转换为可观察的对象。它的作用是创建一个可观察对象,该对象会监听指定事件源上特定类型的事件,并在事件发生时发出相应的数据。在 RxJS 中,事件源可以是 DOM 元素、Node.js EventEmitter、WebSocket、Worker 等支持事件的对象。
使用:
? ?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);
});
文章来源:https://blog.csdn.net/qq_44327851/article/details/135251928
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!