blob: 8e5c0df9533b5c0f8c558557a7d0df707aac7840 [file] [log] [blame]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
function range(start, count, scheduler) {
if (start === void 0) { start = 0; }
return new Observable_1.Observable(function (subscriber) {
if (count === undefined) {
count = start;
start = 0;
}
var index = 0;
var current = start;
if (scheduler) {
return scheduler.schedule(dispatch, 0, {
index: index, count: count, start: start, subscriber: subscriber
});
}
else {
do {
if (index++ >= count) {
subscriber.complete();
break;
}
subscriber.next(current++);
if (subscriber.closed) {
break;
}
} while (true);
}
return undefined;
});
}
exports.range = range;
function dispatch(state) {
var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;
if (index >= count) {
subscriber.complete();
return;
}
subscriber.next(start);
if (subscriber.closed) {
return;
}
state.index = index + 1;
state.start = start + 1;
this.schedule(state);
}
exports.dispatch = dispatch;
//# sourceMappingURL=range.js.map