41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
var Observable_1 = require("../Observable");
|
||
|
var async_1 = require("../scheduler/async");
|
||
|
var isNumeric_1 = require("../util/isNumeric");
|
||
|
var isScheduler_1 = require("../util/isScheduler");
|
||
|
function timer(dueTime, periodOrScheduler, scheduler) {
|
||
|
if (dueTime === void 0) { dueTime = 0; }
|
||
|
var period = -1;
|
||
|
if (isNumeric_1.isNumeric(periodOrScheduler)) {
|
||
|
period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);
|
||
|
}
|
||
|
else if (isScheduler_1.isScheduler(periodOrScheduler)) {
|
||
|
scheduler = periodOrScheduler;
|
||
|
}
|
||
|
if (!isScheduler_1.isScheduler(scheduler)) {
|
||
|
scheduler = async_1.async;
|
||
|
}
|
||
|
return new Observable_1.Observable(function (subscriber) {
|
||
|
var due = isNumeric_1.isNumeric(dueTime)
|
||
|
? dueTime
|
||
|
: (+dueTime - scheduler.now());
|
||
|
return scheduler.schedule(dispatch, due, {
|
||
|
index: 0, period: period, subscriber: subscriber
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
exports.timer = timer;
|
||
|
function dispatch(state) {
|
||
|
var index = state.index, period = state.period, subscriber = state.subscriber;
|
||
|
subscriber.next(index);
|
||
|
if (subscriber.closed) {
|
||
|
return;
|
||
|
}
|
||
|
else if (period === -1) {
|
||
|
return subscriber.complete();
|
||
|
}
|
||
|
state.index = index + 1;
|
||
|
this.schedule(state, period);
|
||
|
}
|
||
|
//# sourceMappingURL=timer.js.map
|