相关疑难解决方法(0)

如何在 JavaScript 中使用异步生成器?

我有一个 api,它将返回一个用于获取更多数据的游标。我是这样模拟的:

function fetch(n) {
  return Promise.resolve({
    results: [n],
    next: next < 10 && n + 1,
  })
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是弄清楚如何将 async/await 与生成器一起使用,以便与这个 api 进行交互。

这基本上是我的原型:

async function* api(url) {
  let result = await fetch(url)
  yield result
  while (result.next) {
    result = await fetch(result.next)
    yield result
  }
}
Run Code Online (Sandbox Code Playgroud)

这个想法是我应该能够创建一个异步生成器并从该生成器中产生,以便遍历游标:

async function main() {
  const gen = api(0)
  const zero = await gen.next()
  console.log(zero.result)
  const one = await gen.next()
  console.log(one.result)
  const rest = await Promise.all([...gen])
  console.log(rest.map(r => r.result))
}
Run Code Online (Sandbox Code Playgroud)

考虑到所有因素,我认为这是处理分页数据的一种非常好的方式,并且能够提取所有数据[...gen]非常酷。 …

javascript generator node.js async-await

5
推荐指数
1
解决办法
2750
查看次数

标签 统计

async-await ×1

generator ×1

javascript ×1

node.js ×1