// RxJS v6+import { interval } from'rxjs';import { publish, tap } from'rxjs/operators';//emit value every 1 secondconstsource=interval(1000);//do nothing until connect() is calledconstexample=publish()(source.pipe(//side effects will be executed oncetap(_ =>console.log('Do Something!')),));/* source will not emit values until connect() is called output: (after 5s) "Do Something!" "Subscriber One: 0" "Subscriber Two: 0" "Do Something!" "Subscriber One: 1" "Subscriber Two: 1"*/constsubscribe=example.subscribe(val =>console.log(`Subscriber One: ${val}`));constsubscribeTwo=example.subscribe(val =>console.log(`Subscriber Two: ${val}`));//call connect after 5 seconds, causing source to begin emitting itemssetTimeout(() => {example.connect();},5000);