Побочные эффекты только при использовании Pipeable Operators?

Я переписываю часть своего кода, чтобы использовать Pipeable Operators вместо операторов "patch", и меня немного смущает вопрос, когда использовать 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 объект, который не то, что я хочу.

Что мне здесь делать?

1 ответ

Решение

Ну, сделайте это просто так:

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

оператор крана является эквивалентом .do() в rxjs 5 и выше.

Другие вопросы по тегам