0

我正在重写我的一些代码以使用可管道运算符代替“补丁”运算符,我对何时使用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(...),所以我得到了一个Observable返回并分配给this.messages$但那不会执行,因为我没有subscribe()'d。但如果我这样做.pipe(...).subscribe(),它会返回一个Subscription对象,这不是我想要的。

我应该在这里做什么?

4

1 回答 1

2

好吧,就像这样简单地做:

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

tap 操作符相当于.do()rxjs 5 及更高版本。

于 2018-06-26T16:46:11.820 回答