frontend/.pnpm-store/v3/files/de/16037b2b575a136d2c4b4a6e6191f5a9125f5276bbff8137b58242a72bd50d1d521d820e2b7901ab41aeccb57c44e248c3f257460eb33cdd49d791989ba58a

28 lines
949 B
Plaintext

import { Observable } from '../Observable';
import { SchedulerLike } from '../types';
export function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {
return new Observable<T>((subscriber) => {
// The current array index.
let i = 0;
// Start iterating over the array like on a schedule.
return scheduler.schedule(function () {
if (i === input.length) {
// If we have hit the end of the array like in the
// previous job, we can complete.
subscriber.complete();
} else {
// Otherwise let's next the value at the current index,
// then increment our index.
subscriber.next(input[i++]);
// If the last emission didn't cause us to close the subscriber
// (via take or some side effect), reschedule the job and we'll
// make another pass.
if (!subscriber.closed) {
this.schedule();
}
}
});
});
}