Skip to content

Commit 8d95c2b

Browse files
committed
improve
1 parent 0da8c86 commit 8d95c2b

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

packages/shared/src/iterator.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ export function replicateAsyncIterator<T, TReturn, TNext>(
101101
source: AsyncIterator<T, TReturn, TNext>,
102102
count: number,
103103
): (AsyncIteratorClass<T, TReturn, TNext>)[] {
104-
const queue = new AsyncIdQueue<{ next: IteratorResult<T, TReturn> } | { error: unknown }>()
104+
const queue = new AsyncIdQueue<
105+
{ next: IteratorResult<T, TReturn> } | { next?: never, error: unknown }
106+
>()
105107

106108
const ids = Array.from({ length: count }, (_, i) => i.toString())
107109
let isSourceFinished = false
@@ -138,21 +140,16 @@ export function replicateAsyncIterator<T, TReturn, TNext>(
138140
queue.open(id)
139141

140142
return new AsyncIteratorClass(
141-
() => {
143+
async () => {
142144
start()
143145

144-
return new Promise((resolve, reject) => {
145-
queue.pull(id)
146-
.then((item) => {
147-
if ('next' in item) {
148-
resolve(item.next)
149-
}
150-
else {
151-
reject(item.error)
152-
}
153-
})
154-
.catch(reject)
155-
})
146+
const item = await queue.pull(id)
147+
148+
if (item.next) {
149+
return item.next
150+
}
151+
152+
throw item.error
156153
},
157154
async (reason) => {
158155
queue.close({ id })

0 commit comments

Comments
 (0)