| "use strict"; |
| var __extends = (this && this.__extends) || (function () { |
| var extendStatics = function (d, b) { |
| extendStatics = Object.setPrototypeOf || |
| ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || |
| function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; |
| return extendStatics(d, b); |
| } |
| return function (d, b) { |
| extendStatics(d, b); |
| function __() { this.constructor = d; } |
| d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
| }; |
| })(); |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| var Scheduler_1 = require("../Scheduler"); |
| var AsyncScheduler = (function (_super) { |
| __extends(AsyncScheduler, _super); |
| function AsyncScheduler(SchedulerAction, now) { |
| if (now === void 0) { now = Scheduler_1.Scheduler.now; } |
| var _this = _super.call(this, SchedulerAction, function () { |
| if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) { |
| return AsyncScheduler.delegate.now(); |
| } |
| else { |
| return now(); |
| } |
| }) || this; |
| _this.actions = []; |
| _this.active = false; |
| _this.scheduled = undefined; |
| return _this; |
| } |
| AsyncScheduler.prototype.schedule = function (work, delay, state) { |
| if (delay === void 0) { delay = 0; } |
| if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { |
| return AsyncScheduler.delegate.schedule(work, delay, state); |
| } |
| else { |
| return _super.prototype.schedule.call(this, work, delay, state); |
| } |
| }; |
| AsyncScheduler.prototype.flush = function (action) { |
| var actions = this.actions; |
| if (this.active) { |
| actions.push(action); |
| return; |
| } |
| var error; |
| this.active = true; |
| do { |
| if (error = action.execute(action.state, action.delay)) { |
| break; |
| } |
| } while (action = actions.shift()); |
| this.active = false; |
| if (error) { |
| while (action = actions.shift()) { |
| action.unsubscribe(); |
| } |
| throw error; |
| } |
| }; |
| return AsyncScheduler; |
| }(Scheduler_1.Scheduler)); |
| exports.AsyncScheduler = AsyncScheduler; |
| //# sourceMappingURL=AsyncScheduler.js.map |