Async / Await vs new Promise (разрешить, отклонить) - PullRequest
0 голосов
/ 04 ноября 2018

Существуют ли различия между асинхронным / ожидающим и более стандартными обозначениями обещаний, использующими .then, .finally и .catch

например

functionThatReturnsPromise(someVar).then((returnedValueFromPromise) => {
    console.log(returnedValueFromPromise)
})

против

async functionThatReturnsPromise(someVar)  {
    await returnedValueFromPromise
}

Я не уверен, что цепочка Promise - это просто старая запись, и она была заменена более новой асинхронной / ожидающей. Есть ли еще вариант использования для обоих? Какая практика лучше?

Ответы [ 3 ]

0 голосов
/ 04 ноября 2018

Вы неправильно понимаете, как это работает. С async/await у вас есть синхронный синтаксический поток выполнения кода, вот и все:

try {
  const returnedValueFromPromise = await functionThatReturnsPromise(someVar);
} catch (err) {
  console.error(err);
  throw err
}

Обратите внимание, что

  • Блок кода должен находиться внутри async функции с областью действия
  • Вам все еще нужно сделать ошибку, не могу предположить, что обещание всегда будет работать хорошо
  • Все значения, возвращаемые закрытой функцией async, являются обещаниями по умолчанию
0 голосов
/ 04 ноября 2018

С await следует быть осторожнее: вам нужно будет обернуть await операторы в try catch block на случай, если запрос не будет выполнен, что, на мой взгляд, более уродливо, чем обычное связывание обещаний.

0 голосов
/ 04 ноября 2018

Все зависит от того, что вы хотите. async / await являются новыми. Подумайте об этом так, они позволяют обещанию исполняться так, как если бы оно было синхронным.

Более того, использование async / await делает ваш код чище и более читабельным. И чтобы ответить на ваш вопрос, между ними не так много различий в том, что они делают. Синтаксис просто совсем другой.

Цепочка обещаний - это не старая мода, они довольно новые, просто async / await появился немного позже, давая вам "лучший" способ обработки обещаний.

Наконец, вы можете использовать их взаимозаменяемо в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...