2024年前端最全我每天都在使用的 10 个 RxJS 运算符_vue rxjs subject pipe map,大厂前端面试真题精选

本文探讨了技术面试的本质,强调了面试不仅是展示技能,更是自我认知和双向沟通的机会。作者分享了前端面试题的关键点,如RxJS的switchMap、catchError和tap操作符,以及面试中如何准备框架原理、算法知识和策略选择。最后,建议求职者在面试前深入了解业务和权衡offer选择。
摘要由CSDN通过智能技术生成

文末

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。

前端面试题汇总

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

性能

linux

前端资料汇总



#### **switchMap():**


每当源可观察对象发出新值时,此运算符用于切换到新的可观察对象。它以一个函数作为参数,它接收发出的值作为输入并返回一个新的可观察值。 


最新的 observable 发出的值由返回的 observable 发出。


例如,您可以使用 switchMap() 根据另一个可观察对象发出的 ID 获取用户数据:



import { switchMap } from ‘rxjs/operators’;
import { UserService } from ‘./user.service’;

constructor(private userService: UserService) {}

this.userId$.pipe(
  switchMap(userId => this.userService.getUser(userId))
).subscribe(user => console.log(user));


#### **catchError():**


此运算符用于处理可观察对象抛出的错误。它以一个函数作为参数,它接收错误作为输入并返回一个新的可观察对象。 


返回的可观察对象可以发出新值、完成或抛出另一个错误。例如,您可以使用 catchError() 重试失败的 HTTP 请求:



import { catchError } from ‘rxjs/operators’;
import { HttpClient } from ‘@angular/common/http’;

constructor(private http: HttpClient) {}

this.http.get(‘/api/data’).pipe(
  catchError(() => this.http.get(‘/api/fallbackData’))
).subscribe(data => console.log(data));


#### **tap():**


此运算符用于在不修改可观察对象的发射值的情况下执行副作用。它以一个函数作为参数,它接收发出的值作为输入并可以执行任何副作用。 


返回值被忽略,原始值不变。例如,您可以使用 tap() 来记录可观察对象发出的值:



import { tap } from ‘rxjs/operators’;
import { of } from ‘rxjs’;

of(1, 2, 3).pipe(
  tap(value => console.log(Emitting value: ${value}))
).subscribe();


#### **take():**


此运算符用于限制可观察对象发出的值的数量。这是一个例子:



import { take } from ‘rxjs/operators’;
import { of } from ‘rxjs’;

of(1, 2, 3, 4, 5).pipe(
  take(3)
).subscribe(value => console.log(value)); // output: 1, 2, 3


在此示例中,take(3) 用于将 of(1, 2, 3, 4, 5) 发出的数字流限制为前三个值。


#### **debounceTime():**


此运算符用于按指定的时间量对值流进行去抖动。这是一个例子:



import { debounceTime } from ‘rxjs/operators’;
import { fromEvent } from ‘rxjs’;

const input = document.getElementById(‘input’);

fromEvent(input, ‘input’).pipe(
  debounceTime(500)
).subscribe(event => console.log(input.value));


在此示例中,debounceTime(500) 用于将来自输入元素的输入事件流去抖动 500 毫秒。这意味着如果用户快速连续键入,则只会记录 500 毫秒不活动后的输入值。


#### **distinctUntilChanged():**


此运算符用于仅从值流中发出不同的值。这是一个例子:



import { distinctUntilChanged } from ‘rxjs/operators’;
import { of } from ‘rxjs’;

of(1, 2, 2, 3, 3, 3, 4).pipe(
  distinctUntilChanged()
).subscribe(value => console.log(value)); // output: 1, 2, 3, 4


在此示例中,distinctUntilChanged() 用于仅从 of(1, 2, 2, 3, 3, 3, 4) 发出的数字流中发出不同的值。


#### **merge():**


此运算符用于将多个可观察对象合并为一个可观察对象。这是一个例子:



import { merge } from ‘rxjs’;
import { interval } from ‘rxjs’;

const obs1 = interval(1000);
const obs2 = interval(2000);

总结

前端资料汇总

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

  • 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!
    喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用RxJS库中的Observable和Subject来处理数据流可以帮助你更好地管理和处理异步操作。 首先,你需要在Angular项目中导入RxJS库: ```typescript import { Observable, Subject } from 'rxjs'; ``` 接下来,你可以使用Observable来创建一个可观察对象,它可以发出一个或多个值,并且可以被订阅进行监听。例如: ```typescript const myObservable = new Observable((observer) => { observer.next('Hello'); observer.next('World'); observer.complete(); }); ``` 在上面的示例中,我们创建了一个Observable,它发出了两个值('Hello'和'World'),然后通过调用`complete()`方法来表示数据流结束。 你还可以使用Subject来创建一个可观察的主题,它既是一个观察者,也是一个可被订阅的对象。它可以用来向订阅者广播值或事件。例如: ```typescript const mySubject = new Subject<number>(); // 向主题发送数据 mySubject.next(1); mySubject.next(2); // 订阅主题接收数据 mySubject.subscribe((value) => { console.log(value); // 输出:1, 2 }); ``` 在上面的示例中,我们创建了一个Subject并向其发送了两个值(1和2),然后通过订阅Subject来接收这些值。 除了上述示例之外,RxJS还提供了丰富的操作符和方法,可以帮助你对数据流进行转换、过滤、组合等操作。你可以使用这些操作符来处理异步操作、处理HTTP请求、处理用户输入等场景。 总结起来,使用RxJS中的Observable和Subject可以帮助你更好地处理和管理数据流,使你的代码具备更好的可读性和可维护性。你可以根据具体的需求使用RxJS提供的操作符和方法来进行进一步的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值