You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
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
|