Если я правильно понял ваш вопрос, я вижу 2 возможных случая.
Первый - это то, что ваш source
Observable начинает испускать свои значения независимо от wait$
. Когда wait$
излучает, только тогда вы начинаете использовать значения, излучаемые source
. Это поведение может быть реализовано с помощью функции combineLatest
, подобной этой
//emits value every 500ms
const source$ = interval(500);
combineLatest(source$, wait$)
.pipe(
map(([s, v]) => s), // to filter out the value emitted by wait$
take(5), // just to limit to 5 the values emitted
)
.subscribe(val => console.log(val));
setTimeout(() => {
wait$.next(1);
}, 2000);
. В этом случае на консоли выводится последовательность, начинающаяся с 2
, поскольку wait$
излучается через 2 секунды.
Во втором случае вы хотите, чтобы source
начал излучать свои значения только после того, как wait$
испустил. В этом случае вы можете использовать оператор switchMap
, например здесь
const wait_2$ = new Subject();
//emits value every 500ms
const source_2$ = interval(500);
wait_2$
.pipe(
switchMap(() => source_2$),
take(5), // just to limit to 5 the values emitted
)
.subscribe(val => console.log(val));
setTimeout(() => {
wait_2$.next(1);
}, 4000);
В этом случае через 4 секунды на консоли печатается последовательность, начинающаяся с 0
.