rxjs - 为什么我不能通过管道传输 BehaviourSubject?
问题描述
我不确定为什么subscribe
可以使用BehaviourSubject
但不能使用pipe
.
例如,下面的代码打印出来?
subscribe: 123
subscribe: 456
为什么它也不打印
pipe: 123
pipe: 456
代码:
import {tap } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs';
const subject = new BehaviorSubject(123);
subject.subscribe(p => console.log("subscribe: " + p));
subject.pipe(
tap(p => {console.log("pipe:" + p);})
)
subject.next(456);
解决方案
subject.pipe(
tap(p => {console.log("pipe:" + p);})
)
你只是在这里利用 observable。您需要单独订阅此主题才能使点击生效。以下代码将为您提供所需的控制台日志:
subject.pipe(
tap(p => {console.log("pipe:" + p);})
).subscribe();
如果您只能订阅一次,那么您可以尝试以下代码:
const abc$ = new BehaviorSubject(123).asObservable().pipe(
tap((val) => console.log('pipe: ', val))
);
abc$.subscribe((val) => console.log('subscribe: ', val));
推荐阅读
- java - Android Studio APP 构建成功但无法运行
- asp.net-core - Azure App Service 在通过 DevOps 管道部署后出现“503 Service Unavailable”
- python - 如何同时写入日志和打印到屏幕?
- asp.net-core - 在 Asp.Net 5 中获取 IIS 版本或其他 IIS 服务器变量?
- image - Flutter Web - 滚动对于大量图像非常滞后
- r - 使用 dplyr 匹配两个日期字段
- java - 在 Android (Java) 中,从包含当前用户电子邮件地址的文档中获取所有评论
- python - RuntimeError: input.size(-1) 必须等于 input_size。预期 200,得到 0 ---- PySyft / PyTorch / Federated Learning
- python - pygame zero 不会下载并且会出错
- javascript - 播放未加载的视频时,视频海报在 chrome 中被拉伸