使用异步迭代在我的后端进行轮询

时间:2018-06-03 14:52:08

标签: javascript promise eventemitter

使用异步迭代在我的后端显示某些资源的状态是一个好习惯吗?例如:

const item = driver.get(idOfDriver)

try {
  for await (const { status } of item) {
    console.log(status)
  }
} catch (err) {
  // do something here
} finally {
  // the driver arrived in the final location
  const { finalLocation, id } = item
  console.log(`final location of driver ${id} is ${finalLocation`)
}

我做了异步迭代不适合做的事情?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果我弄错了,请纠正我,但我想您只是尝试在get中启动数据提取并等到它被加载,然后进行一些处理。在这种情况下,您不需要异步迭代,这在处理一系列承诺时会在更复杂的场景中使用。

你可以使用ES6承诺:

driver.get(idOfDriver)
  .then(({ finalLocation, id }) => {
    console.log(`final location of driver ${id} is ${finalLocation`)
  })
  .catch(err => console.error(err))

或使用ES7 async/await语法:

try {
  const {finalLocation, id} = await driver.get(idOfDriver);
  console.log(`final location of driver ${id} is ${finalLocation`)
}
catch(err) {
  console.error(err)
}