Объедините наблюдаемые RXJS, но подождите, пока первый начнет излучать значения - PullRequest
2 голосов
/ 24 октября 2019

У меня есть поток событий видеопроигрывателя, который запускается при нажатии определенных событий (таких как пауза или воспроизведение). Поток поступает из двух наблюдаемых с помощью combLatest, чтобы захватить текущую позицию видео при каждом генерировании события.

Мне нужно каждые 10 секунд генерировать другое событие и добавлять его в микс. Все работает нормально, но ping $ observable начинает генерировать события до того, как будет выпущено первое значение $ value событий, которое будет событием, которое отмечает, что проигрыватель был загружен, и все другие события могут быть записаны.

Как я могу объединить ping $ и 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));

Спасибо

1 Ответ

5 голосов
/ 24 октября 2019
ping$.pipe(
    skipUntil(events$)
);

ping$ будет пропущено до тех пор, пока events$ не выдаст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...