Skip to content

fork() function

원본 소스의 포크 iterable을 반환합니다. 각 포크는 소스와 동일한 값을 포함하며 독립적으로 소비할 수 있습니다.

Signature:

typescript
declare function fork<A extends Iterable<unknown> | AsyncIterable<unknown>>(
  iterable: A,
): ReturnForkType<A>;

Example

ts
const arr = [1, 2, 3];
const iter1 = fork(arr);
const iter2 = fork(arr);

iter1.next(); // {done:false, value: 1}
iter1.next(); // {done:false, value: 2}
iter2.next(); // {done:false, value: 1}
iter2.next(); // {done:false, value: 2}

const str = "abc";
const strIter1 = fork(str);
const strIter2 = fork(str);

strIter1.next(); // {done:false, value: 'a'}
strIter1.next(); // {done:false, value: 'b'}
strIter2.next(); // {done:false, value: 'a'}
strIter2.next(); // {done:false, value: 'b'}

// with pipe
const arrAdd10 = pipe(
  [1, 2, 3],
  map((a) => a + 10),
);

const arrAdd10Iter1 = fork(arrAdd10);
const arrAdd10Iter2 = fork(arrAdd10);
arrAdd10Iter1.next(); // { value: 11, done: false }
arrAdd10Iter2.next(); // { value: 11, done: false }

const arrAdd10Iter3 = fork(arrAdd10Iter1);
arrAdd10Iter1.next(); // { value: 12, done: false }
arrAdd10Iter1.next(); // { value: 13, done: false }
arrAdd10Iter2.next(); // { value: 12, done: false }
arrAdd10Iter3.next(); // { value: 12, done: false }

Open Source Code

Released under the Apache-2.0 License.