How do I make an Observable Interval start immediately without a delay?

adamdport picture adamdport · May 24, 2017 · Viewed 29.6k times · Source

I want my observable to fire immediately, and again every second. interval will not fire immediately. I found this question which suggested using startWith, which DOES fire immediately, but I then get a duplicate first entry.

  Rx.Observable.interval(1000).take(4).startWith(0).subscribe(onNext);

https://plnkr.co/edit/Cl5DQ7znJRDe0VTv0Ux5?p=preview

How can I make interval fire immediately, but not duplicate the first entry?

Answer

Julia Passynkova picture Julia Passynkova · May 24, 2017

Before RxJs 6:

Observable.timer(0, 1000) will start immediately.

RxJs 6+

import {timer} from 'rxjs/observable/timer';
timer(0, 1000).subscribe(() => { ... });