仅在使用管道操作员时出现副作用?



我正在重写我的一些代码以使用管道运算符代替"补丁"运算符,我对何时使用pipe()以及如果我只想要副作用,如何订阅管道Observable来"激活"它有点困惑?

例如,我有以下代码:

this.messages$ = this.messageService.getMessages(messageType)
.do((messages: Message[]) => {
console.log('The first message is ' + deviceMessages[0].text);
});

我在这里感到困惑,因为我想做this.messageService.getMessages(messageType).pipe(...)所以我得到了一个返回并分配给this.messages$Observable,但这不会执行,因为我还没有subscribe()'d。但是如果我这样做.pipe(...).subscribe()那么它将返回一个Subscription对象,这不是我想要的。

我应该在这里做什么?

好吧,简单地这样做:

this.messages$ = this.messageService.getMessages(messageType).pipe(
tap((messages: Message[]) => {
console.log('The first message is ' + deviceMessages[0].text);
})
);
this.messages$.subscribe();

tap 运算符相当于 RXJS 5 及更高版本中的.do()

最新更新