【问题标题】:Combine RXJS observables, but wait for first one to begin emitting values组合 RXJS 可观察对象,但等待第一个开始发出值
【发布时间】:2019-10-24 02:48:39
【问题描述】:

我有一个视频播放器事件流,在按下某些事件(如暂停或播放)时触发。该流来自两个使用 combineLatest 的可观察对象,以在发出事件时获取当前视频位置。

我需要每 10 秒发出另一个事件并将其放入混合中。一切正常,但 ping$ observable 在第一个 events$ 值发出之前开始发出事件,这将是标记播放器已加载的事件,并且可能会记录所有其他事件。

如何将 ping$ 和 events$ 合并到一个流中,但只有在 events$ 开始发出值后才让 ping$ 开始?

const events$ = mediaStreams.events$;
const currTime$ = mediaStreams.currentTime$;

const intervalSource$ = interval(2000);
const ping$ = intervalSource$.pipe(map(() => "ping"));

const concatEvents$ = merge(events$, ping$);


const combined = concatEvents$.pipe(
 withLatestFrom(currTime$),
   map(([first, second]) => {
    return {
       event: first,
       position: second
     }
  })
)


combined.subscribe(val => console.log('COMBINED', val));

谢谢

【问题讨论】:

    标签: javascript rxjs reactive-programming


    【解决方案1】:
    ping$.pipe(
        skipUntil(events$)
    );
    

    ping$ 将被跳过,直到 events$ 发出。

    【讨论】:

    • 几分钟前我确实是这样解决的。感谢您的回答,我会标记它的权利
    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多