UNPKG

691 BPlain TextView Raw
1import { iterateLater } from '.';
2
3export function partition<T>(
4 index: number,
5 iterable: AsyncIterable<T>
6): [AsyncIterable<T>, AsyncIterable<T>] {
7 let current = 0;
8 const [partitionFirst, nextFirst, completeFirst] = iterateLater<T>();
9 const [partitionSecond, nextSecond, completeSecond] = iterateLater<T>();
10 const iterate = async () => {
11 for await (const value of iterable) {
12 if (current == index) {
13 completeFirst();
14 }
15 if (current < index) {
16 nextFirst(value);
17 } else {
18 nextSecond(value);
19 }
20 current++;
21 }
22 completeFirst();
23 completeSecond();
24 };
25 iterate();
26 return [partitionFirst, partitionSecond];
27}