49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
"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
|