仅从 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
我正在使用 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