Используйте асинхронную итерацию для опроса в моем бэкэнде - PullRequest
0 голосов
/ 03 июня 2018

Является ли хорошей практикой использование асинхронной итерации для отображения состояния какого-либо ресурса в моем бэкэнде?Например:

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 голосов
/ 03 июня 2018

Поправьте меня, если я вас не правильно понял, но я полагаю, вы просто пытаетесь инициировать выборку данных в get и подождите, пока она загрузится, затем выполните некоторую обработку.В таком сценарии вам не нужна асинхронная итерация, которая используется в более сложных сценариях при работе с сериями обещаний.

Вы можете сделать это, используя обещания ES6:

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

Или используя ES7async/await синтаксис:

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