rxjs - Rxjs 在第一次匹配时执行并退出 observable
问题描述
我有一个像这样的可观察的。执行可以在这里检查。
import { from, merge , } from 'rxjs';
import { filter, tap, share } from 'rxjs/operators';
const nextTrain$ =
from(['Yellow', 'Green', 'Neon', 'Amber'])
.pipe(share());
const yellowTrain$ =
nextTrain$
.pipe(
filter(color => color === 'Yellow'),
tap(() => console.log(`Yellow Color Train is comming`))
)
const greenTrain$ = nextTrain$
.pipe(
filter((color) => color === 'Green'),
tap(() => console.log(`Green Color Train is comming`))
)
const blueTrain$ = nextTrain$
.pipe(
filter((color) => color === 'Blue'),
tap(() => console.log(`Blue Color Train is comming`))
)
merge(yellowTrain$,
greenTrain$,
blueTrain$).subscribe();
目前,当我订阅合并语句时,打印出来的是
黄色火车来了
绿色火车来了
而我想要的是打印第一个匹配条件并停止其他所有内容。所以这意味着只需打印
黄色火车来了。
我如何在 rxjs 中做到这一点?
解决方案
只需添加第一个运算符:
merge(....).pipe(first())
推荐阅读
- php - 如何在最近的帖子小部件 wordpress 中显示帖子的类别?
- spring - 如何在 Spring Boot 应用程序中依赖 @RequestHeader
- mysql - mysql如何计算1列中的每个当前值并拆分为3列
- c - mc56f8367头文件的要求
- javascript - 蚂蚁设计反应多表单布局
- swift - GPUImage2 录制的视频没有图像
- c# - 如何编写、编译和运行 C# 代码段或脚本
- python - 如何为特定工作项的不同阶段设置时间差
- python - 无法取消注册 ble 通知的 dbus 信号
- java - appium 的此会话问题不支持定位器策略“css 选择器”