Если вы какое-то время программировали на JavaScript, то, вероятно, использовали метод fetch() для отправки и запроса информации из API. Вот как выглядит типичный запрос на выборку:

function getData() {
  fetch(myApi)
  .then(response => response.json())
  .then(results => {
    console.log(results)
    // return API data
  }
}

В ES8 JavaScript представил ключевые слова async и await. Если вы видите ключевое слово async перед функцией, вы можете сразу сказать себе: «Эта функция возвращает обещание». Даже если функция не возвращает обещание неявным образом, движок JavaScript автоматически завершит возвращаемое значение в разрешенное обещание.

Функции, которым предшествует async, выполняются асинхронно через цикл обработки событий JavaScript. Ключевое слово await указывает JavaScript ждать, пока промис не будет разрешен, а затем возвращать его результат. Однако await можно использовать только внутри функции async, иначе вы получите синтаксическую ошибку. Вот приведенный выше пример, переписанный с async и await:

async function getData() {
  let response = await fetch(myApi);
  let results = await response.json();
  return results;
}

После вызова функции getData() вы можете добавить then() для управления возвращаемыми результатами и catch() для любых ошибок. Ключевые слова async и await — это «синтаксический сахар», который позволяет вам выражать мысли более четко и лаконично. На мой взгляд, гораздо проще читать блоки кода без нескольких цепочек then().

Итак, вы должны использовать async/await вместо только выборки? В конце концов, они оба могут возвращать одни и те же данные. Но если ваша цель как программиста JavaScript — создать чистый, легко читаемый код, тогда вам следует использовать async и await и писать это синтаксическое слащавое совершенство.