await
- это просто внутренняя версия .then()
(делает то же самое).Причина выбора одного из другого не связана с производительностью, а связана с желаемым стилем кодирования или удобством кодирования.Конечно, у переводчика есть еще несколько возможностей для оптимизации вещей внутренне с помощью await
, но вряд ли так и должно быть, как вы решите, какой использовать.Если бы все остальное было равным, я бы выбрал await
по указанной выше причине.Но я бы сначала выбрал, который сделал код проще для написания, понимания, поддержки и тестирования.
При правильном использовании await
может часто сэкономить вам кучу строк кода, делая ваш код прощечитать, тестировать и поддерживать .Вот почему он был изобретен.
Нет никакой разницы между двумя версиями вашего кода.Оба достигают одного и того же результата, когда вызов axios успешен или имеет ошибку.
Где await
может иметь большее преимущество, если у вас было несколько последовательных асинхронных вызовов, которые нужно было сериализовать.Тогда вместо того, чтобы заключать их в квадратные скобки внутри каждого обработчика .then()
для правильной их цепочки, вы можете просто использовать await
и иметь более простой код.
Распространенная ошибка как с await
, так и с .then()
:забыть правильную обработку ошибок.Если ваше желание обрабатывать ошибки в этой функции - просто вернуть отклоненное обещание, то обе ваши версии делают это одинаково.Но если у вас есть несколько асинхронных вызовов в строке и вы хотите сделать что-то более сложное, чем просто возврат первого отклонения, тогда методы обработки ошибок для await
и .then()
/ .catch()
совсем другое и, что кажется более простым, будет зависеть от ситуации.