触发操作 异步管道订阅可观察量后



我有以下组件:

data$: Observable < MyApolloQueryResult > ;
constructor(private myService: MyService) {}
ngOnInit() {
this.data$ = this.myService.getData();
}
<div *ngIf="data$ | async as data; else loading">
...
</div>

如您所见,我只订阅组件模板中的Observable。问题是,只有在上面的async管道订阅了Observable之后,我如何触发一个操作(例如在上面的myService内设置一个变量(,换句话说,在确保这个Observable不再冷之后。

为了产生副作用,请使用do运算符。

this.data$ = this.myService.getData().do(value => {
// side effect
})

传递给do运算符的函数将在每次可观察的发送时被调用,对于每个订阅 - 所以要注意只订阅一次,否则他的效果将发生多次。


但是,这通常意味着您没有完全使用 RxJS 的强大功能。与其做副作用,不如尝试使用一些运算符按照您想要的方式操作流。

最新更新