// RxJS v6+import { of, interval } from'rxjs';import { concatMapTo, delay, take } from'rxjs/operators';//emit value every 2 secondsconstsampleInterval=interval(500).pipe(take(5));constfakeRequest=of('Network request complete').pipe(delay(3000));//wait for first to complete before next is subscribedconstexample=sampleInterval.pipe(concatMapTo(fakeRequest));//result//output: Network request complete...3s...Network request complete'constsubscribe=example.subscribe(val =>console.log(val));
// RxJS v6+import { interval } from'rxjs';import { concatMapTo, take } from'rxjs/operators';//emit value every 2 secondsconstinterval$=interval(2000);//emit value every second for 5 secondsconstsource=interval(1000).pipe(take(5));/* ***Be Careful***: In situations like this where the source emits at a faster pace than the inner observable completes, memory issues can arise. (interval emits every 1 second, basicTimer completes every 5)*/// basicTimer will complete after 5 seconds, emitting 0,1,2,3,4constexample=interval$.pipe(concatMapTo( source, (firstInterval, secondInterval) =>`${firstInterval}${secondInterval}` ));/* output: 0 0 0 1 0 2 0 3 0 4 1 0 1 1 continued...*/constsubscribe=example.subscribe(val =>console.log(val));