Я пытаюсь понять, почему мой код не работает так, как я ожидаю от него поведения.
Если вы скопируете и вставите следующий код в 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()));
obs$
не завершается, поэтомуobs2$
никогда не подписывается. Это ожидаемое поведение. Попробуйте добавитьtake(5)
кpipe
внутриobs$
, чтобы увидеть, как изменится поведение. - person cartant   schedule 02.07.2018result$
. Это наблюдаемая, составленная с использованиемconcat
. - person cartant   schedule 02.07.2018