wishthis/node_modules/rxjs/_esm2015/internal/observable/range.js

44 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-01-21 08:28:41 +00:00
import { Observable } from '../Observable';
export function range(start = 0, count, scheduler) {
return new Observable(subscriber => {
if (count === undefined) {
count = start;
start = 0;
}
let index = 0;
let current = start;
if (scheduler) {
return scheduler.schedule(dispatch, 0, {
index, count, start, subscriber
});
}
else {
do {
if (index++ >= count) {
subscriber.complete();
break;
}
subscriber.next(current++);
if (subscriber.closed) {
break;
}
} while (true);
}
return undefined;
});
}
export function dispatch(state) {
const { start, index, count, subscriber } = state;
if (index >= count) {
subscriber.complete();
return;
}
subscriber.next(start);
if (subscriber.closed) {
return;
}
state.index = index + 1;
state.start = start + 1;
this.schedule(state);
}
//# sourceMappingURL=range.js.map