【问题标题】:zip 2 observable everytime one of them emitzip 2 observable 每次其中一个发射
【发布时间】:2021-02-28 04:52:09
【问题描述】:

我有以下

const timer1 = interval(1000).pipe(take(10));
const timer2 = interval(2000).pipe(take(6));
const merged = merge(timer1, timer2);
merged.subscribe(x => console.log(x));

现在这将只提供最新发射的 observable 的值。

我希望,当一个发出时,我会得到新的值,并从另一个得到最新的值。

我尝试使用zip,但它不会使用最新的。检查下面的屏幕截图,了解我希望拥有的缺失值。我怎样才能做到这一点?

加入,可以工作,但如果同一个可观察对象在另一个发出值之前发出两次,则加入不会发出。

【问题讨论】:

    标签: rxjs


    【解决方案1】:

    您正在寻找combineLatest

    combineLatest 将在任一源 observable 发出时发出。注意:在每个 observable 至少发出一次之前,它不会第一次发出。

    因此,在您的示例中,它可能看起来像这样 (StackBlitz):

    const timer1 = interval(1000).pipe(take(10));
    const timer2 = interval(2000).pipe(take(6));
    const merged = combineLatest([timer1, timer2]);
    
    merged.subscribe(([one, two]) => console.log(`${one}-${two}`));
    

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多