MCPcopy
hub / github.com/vercel/next.js / raceIterators

Function raceIterators

test/development/basic/next-rs-api.test.ts:92–109  ·  view source on GitHub ↗
(iterators: AsyncIterableIterator<T>[])

Source from the content-addressed store, hash-verified

90}
91
92function raceIterators<T>(iterators: AsyncIterableIterator<T>[]) {
93 const nexts = iterators.map((iterator, i) =>
94 iterator.next().then((next) => ({ next, i }))
95 )
96 return (async function* () {
97 while (true) {
98 const remaining = nexts.filter((x) => x)
99 if (remaining.length === 0) return
100 const { next, i } = await Promise.race(remaining)
101 if (!next.done) {
102 yield next.value
103 nexts[i] = iterators[i].next().then((next) => ({ next, i }))
104 } else {
105 nexts[i] = undefined
106 }
107 }
108 })()
109}
110
111async function* filterMapAsyncIterator<T, U>(
112 iterator: AsyncIterableIterator<T>,

Callers 1

Calls 4

thenMethod · 0.80
mapMethod · 0.45
nextMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected