RxJS успешно справляется с асинхронным каналом - PullRequest
2 голосов
/ 02 июля 2019

Так что в основном я хочу сделать следующее:

У меня есть бэкэнд-вызов и шаблон в Angular 6

После этого внутреннего вызова я хочу переключить результат в dataUpdated $ observable, который будет отображать что-то в шаблоне, например:

<h1 *ngIf="dataUpdated$ | async">Very Good!</h1>

и затем я хочу установить таймер для того же потока, а после, скажем, 2 секунды, я хочу снова обновить это наблюдаемое, чтобы оно исчезло в шаблоне.

Я не хочу использовать метод подписки, у меня уже есть подписка в коде.

Я хочу обновить код до одного потока без прерывания или необходимости отписываться вручную

1 Ответ

3 голосов
/ 02 июля 2019

Канал async должен содержать только одну подписку, поэтому вы можете использовать switchMap, чтобы просто переслать исходное значение, а через 2 секунды - false, что должно скрыть сообщение.

dataUpdated$ = source.pipe(
  switchMap(v => merge(
    of(v),
    of(false).pipe(delay(2000)),
  )),
);
...