1 import { Observable } from '../Observable';
2 import { async } from '../scheduler/async';
3 import { isNumeric } from '../util/isNumeric';
4 import { isScheduler } from '../util/isScheduler';
5 export function timer(dueTime = 0, periodOrScheduler, scheduler) {
7 if (isNumeric(periodOrScheduler)) {
8 period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);
10 else if (isScheduler(periodOrScheduler)) {
11 scheduler = periodOrScheduler;
13 if (!isScheduler(scheduler)) {
16 return new Observable(subscriber => {
17 const due = isNumeric(dueTime)
19 : (+dueTime - scheduler.now());
20 return scheduler.schedule(dispatch, due, {
21 index: 0, period, subscriber
25 function dispatch(state) {
26 const { index, period, subscriber } = state;
27 subscriber.next(index);
28 if (subscriber.closed) {
31 else if (period === -1) {
32 return subscriber.complete();
34 state.index = index + 1;
35 this.schedule(state, period);
37 //# sourceMappingURL=timer.js.map