Concatmap с интервалом не работает должным образом - PullRequest
0 голосов
/ 01 июля 2018

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

Если вы скопируете и вставите следующий код в 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()));  

1 Ответ

0 голосов
/ 02 июля 2018
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(14000).pipe(map(() => 'aaaa'), take(5));
const obs2$ = interval(1000).pipe(map(() => 'bbbb'));

const result$ = obs$.pipe(concatMap(() => obs2$));

const subscribe = result$.subscribe(val => console.log(val + ' ' + new Date().toLocaleTimeString()));  
...