concatMap с интервалом не работает должным образом

Я пытаюсь понять, почему мой код не работает так, как я ожидаю от него поведения.

Если вы скопируете и вставите следующий код в https://stackblitz.com, вы увидите, что он подождет 4 секунды, а затем отображает «aaaa» каждую секунду вместо «bbbb» каждую секунду. Почему?

import { from, of, race, timer, interval } from 'rxjs';
import { groupBy, mergeMap, toArray, map,merge, reduce, concatMap, delay, concat, timeout, catchError, take } from 'rxjs/operators';

const obs$ = interval(4000).pipe(map(() => 'aaaa'));
const obs2$ = interval(1000).pipe(map(() => 'bbbb'));
 
const result$ = obs$.pipe(concatMap(() => obs2$));
 
const subscribe = obs$.subscribe(val => console.log(val + ' ' + new Date().toLocaleTimeString()));  

person John    schedule 01.07.2018    source источник
comment
obs$ не завершается, поэтому obs2$ никогда не подписывается. Это ожидаемое поведение. Попробуйте добавить take(5) к pipe внутри obs$, чтобы увидеть, как изменится поведение.   -  person cartant    schedule 02.07.2018
comment
@cartant, если я добавлю take (5) в канал в obs $, он отобразит «aaaa» 5 раз и перестанет выдавать какое-либо значение. Результат, который я ожидаю увидеть, должен быть: Подождите 4 секунды и отображайте «bbbb» каждую секунду навсегда. Так что я не понимаю, почему это не так   -  person John    schedule 02.07.2018
comment
Подпишитесь на result$. Это наблюдаемая, составленная с использованием concat.   -  person cartant    schedule 02.07.2018
comment
хорошо, спасибо @cartant, это работает   -  person John    schedule 02.07.2018