我有一个异步生成器函数,我想只获取其返回值,而无需再次调用。现在我有这样的东西:
async function *getData(): AsyncGenerator<object[], object[]>
{
let results = []
let res = {};
while (true)
{
res = await apiCall(res.next);
results.push(...res.data)
if (!res.next) break;
yield res.data;
}
return results;
}
async function main()
{
const genFn = getData();
while (!(await genFn.next()).done) {}
}
是否有一种更好/更简洁的方式不需要while循环?
答案 0 :(得分:0)
除了创建一个函数来帮您清理之外,您无能为力。不过,您可以使用 for-await
而不是 while 循环。
async function drainAsyncIterable(iterable) {
const iterator = iterable[Symbol.asyncIterator]();
while (!(await iterator.next()).done) {}
}
对比
async function drainAsyncIterable(iterable) {
for await (const _ of iterable) {}
}