Я создал функцию player , которая получает три параметра:
- source $: Ваш наблюдаемый источник должен быть приостановлен / воспроизведен
- play $: Продолжение испускать ваш источник $ observable
- pause $: приостанавливает ваш источник $ observable
const player = <T>(source$: Observable<T>, play$: Observable<void>, pause$: Observable<void>): Observable<T> =>
merge(
play$.pipe(
switchMap(() => of(source$))
),
pause$.pipe(
switchMap(() => of(NEVER))
)
).pipe(
switchMap(stream => stream)
)
Эта функция в настоящий момент выдает ошибку, насколько я вижу. За короткое время у меня не получилось исправить ошибку. Ошибка вызвана из (void 0) в паузе $ switchMap. Позже я постараюсь исправить эту ошибку. Удалите ошибку, функция работает.
Теперь вы можете использовать play $ и pause $ Observable для запуска воспроизведения / паузы:
const play$: Observable<void> = interval(20000).pipe(
startWith(void 0),
mapTo(void 0)
);
const pause$: Observable<void> = play$.pipe(
switchMap(() => interval(15000).pipe(
take(1)
)),
mapTo(void 0)
);
const player$ = player(source$, play$, pause$);
Решает ли это вашу проблему? Если есть какие-либо проблемы с решением, дайте мне знать, и я пытаюсь адаптироваться.