我正在重写我的一些代码以使用管道运算符代替"补丁"运算符,我对何时使用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()
。