只有在使用 Pipeable Operators 时才有副作用?
Side-effects only when using Pipeable Operators?
我正在重写我的一些代码以使用 Pipeable Operators 代替 "patch" 运算符,我对何时使用 pipe()
以及如何订阅管道有点困惑Observable
到 "activate" 如果我只想要副作用?
比如我有这个代码:
this.messages$ = this.messageService.getMessages(messageType)
.do((messages: Message[]) => {
console.log('The first message is ' + deviceMessages[0].text);
});
我在这里感到困惑,因为我想我想做 this.messageService.getMessages(messageType).pipe(...)
所以我得到一个 Observable
returned 并分配给 this.messages$
但那不会执行,因为我还没有 subscribe()
。但是如果我这样做 .pipe(...).subscribe()
那么它将 return 一个 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()
。
我正在重写我的一些代码以使用 Pipeable Operators 代替 "patch" 运算符,我对何时使用 pipe()
以及如何订阅管道有点困惑Observable
到 "activate" 如果我只想要副作用?
比如我有这个代码:
this.messages$ = this.messageService.getMessages(messageType)
.do((messages: Message[]) => {
console.log('The first message is ' + deviceMessages[0].text);
});
我在这里感到困惑,因为我想我想做 this.messageService.getMessages(messageType).pipe(...)
所以我得到一个 Observable
returned 并分配给 this.messages$
但那不会执行,因为我还没有 subscribe()
。但是如果我这样做 .pipe(...).subscribe()
那么它将 return 一个 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()
。