получить новейшее значение только из наблюдаемой - PullRequest
0 голосов
/ 13 апреля 2020

Я работаю с Angular 9 / rx js 6.5.2 ,

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

Мой код:

PS: Вы можете проверить это непосредственно по этой ссылке: https://stackblitz.com/edit/pjreww

const observable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  subscriber.next(3);
  setTimeout(() => {
    subscriber.next(4);
    subscriber.complete();
  }, 1000);
});

observable
  .pipe(
    //some pipe to make me take the latest value only
  )
  .subscribe({
    next(x) { console.log('got value ' + x); },
  });

Требуются выходные данные: :

3
4

Фактический объем производства

1
2
3
4

1 Ответ

1 голос
/ 13 апреля 2020

Вы можете использовать shareReplay(1), который всегда будет воспроизводить только последнее выданное значение:

observable
  .pipe(
    shareReplay(1),
  )
  .subscribe({
    next(x) { console.log('got value ' + x); },
  });

Демонстрационная версия: https://stackblitz.com/edit/pjreww-fzs5sl?file=index.ts

...