Demo: generate
The generate operator creates an observable data stream using a loop; similar to a javascript for loop.
generate( initialState, conditionToCheck , incrementLogic);
//Hint: On the timescale above the output will look overlapped
//generate(initialState, conditionToCheck , incrementLogic)
let input = generate(10, x => x <= 20, x => x + 2);
//let's add 1sec delay after each data to remove the overlap
let process = concatMap(v => of(v).pipe(delay(1000)));
let output = input.pipe(process).subscribe(v=>console.log(v))