仅从 Observable 获取最新值

get the newest value only from an Observable

我正在使用 Angular 9 / rxjs 6.5.2,

我想订阅 Observable 时只获取最新的值, 我想要 latest 而不是 last,因为对于最后一个,它将等到 Observable 完成但在我的情况下我想要最新的时刻.

我的代码:

PS:可以直接在这个link中测试: 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

您可以使用 shareReplay(1),它将始终仅重播发出的最新值:

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

现场演示:https://stackblitz.com/edit/pjreww-fzs5sl?file=index.ts