@reactivex/rxjs
Version:
Reactive Extensions for modern JavaScript
44 lines • 1.84 kB
JavaScript
define(["require", "exports", './QueueAction', './FutureAction'], function (require, exports, QueueAction_1, FutureAction_1) {
"use strict";
var QueueScheduler = (function () {
function QueueScheduler() {
this.active = false;
this.actions = []; // XXX: use `any` to remove type param `T` from `VirtualTimeScheduler`.
this.scheduledId = null;
}
QueueScheduler.prototype.now = function () {
return Date.now();
};
QueueScheduler.prototype.flush = function () {
if (this.active || this.scheduledId) {
return;
}
this.active = true;
var actions = this.actions;
// XXX: use `any` to remove type param `T` from `VirtualTimeScheduler`.
for (var action = null; action = actions.shift();) {
action.execute();
if (action.error) {
this.active = false;
throw action.error;
}
}
this.active = false;
};
QueueScheduler.prototype.schedule = function (work, delay, state) {
if (delay === void 0) { delay = 0; }
return (delay <= 0) ?
this.scheduleNow(work, state) :
this.scheduleLater(work, delay, state);
};
QueueScheduler.prototype.scheduleNow = function (work, state) {
return new QueueAction_1.QueueAction(this, work).schedule(state);
};
QueueScheduler.prototype.scheduleLater = function (work, delay, state) {
return new FutureAction_1.FutureAction(this, work).schedule(state, delay);
};
return QueueScheduler;
}());
exports.QueueScheduler = QueueScheduler;
});
//# sourceMappingURL=QueueScheduler.js.map