【发布时间】:2018-02-02 12:20:16
【问题描述】:
假设有 2 个可观察对象,可观察对象 A 和可观察对象 B。 当 A 发出一个值时,我想等待 1 秒,然后发出 B 的最新值。如果 A 在等待 1 秒时发出另一个值,我希望它忘记之前的值并再等待 1 秒(就像 switchMap 一样)。 我怎样才能实现这种行为?
【问题讨论】:
假设有 2 个可观察对象,可观察对象 A 和可观察对象 B。 当 A 发出一个值时,我想等待 1 秒,然后发出 B 的最新值。如果 A 在等待 1 秒时发出另一个值,我希望它忘记之前的值并再等待 1 秒(就像 switchMap 一样)。 我怎样才能实现这种行为?
【问题讨论】:
看起来您可以使用withLatestFrom 运算符轻松完成此操作,如下所示:
const a$ = ...;
const b$ = ...;
a$
.switchMap(v => Observable.of(v).delay(1000))
.withLatestFrom($b.startWith(null), (a, b) => b)
.subscribe(...);
【讨论】: