У меня есть две наблюдаемые, которые никогда не завершают (они являются обработчиками событий). Каждый раз, когда излучается наблюдаемая А, я хочу отбросить все выбросы В, подождать, пока В излучит значение, и сделать что-то с излучением А; игнорировать дальнейшие выбросы B. Если во время ожидания B А генерирует второй сигнал, я хочу отменить ожидание.
В настоящее время у меня есть следующий код:
obsA$.subscribe(value => {
obsB$.pipe(take(1)).subscribe(_ => {
if (value) {
// do stuff with value
}
});
});
Это не распространяется на случай, когда: A испускает один раз, затем A испускает снова, а затем B выдает значение, 1-я подписка на B должна быть отменена, и должна выполняться только вторая подписка.
Как мне подойти к этому вопросу? Есть ли какой-нибудь лучший / более ясный способ написать это?
ObservableA - это событие навигации (переход к новому адресу), а ObsB - из события анимации, которое происходит после навигации. При переходе на новый адрес я хочу дождаться завершения анимации, а затем что-то сделать.