Fire Action在异步管道订阅了Observable之后

时间:2017-08-27 18:34:54

标签: angular rxjs observable angular-pipe

我有以下组件:

data$: Observable < MyApolloQueryResult > ;

constructor(private myService: MyService) {}

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

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

1 个答案:

答案 0 :(得分:1)

为了产生副作用,请使用do operator

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

对于每个订阅,每次observable发出时,都会调用传递给do运算符的函数 - 所以要小心只订阅一次,否则他的效果会多次发生。

但是,这通常意味着您没有完全使用RxJS的强大功能。请尝试使用some of the operators以您喜欢的方式操作流,而不是产生副作用。