Синтаксис async и await в Node.js является эффективным и более чистым способом работы с промисами. Эти конструкции были введены в ECMAScript 2017 для более удобного кодирования асинхронного кода в JavaScript, включая Node.js.
Async
и await
гарантируют, что код будет выполняться как будто он синхронный, при этом сохраняя преимущества асинхронного кода. Давайте разберёмся, как это работает.
Ключевое слово async
перед функцией означает, что функция возвращает промис. То есть, функции с обозначением async
всегда возвращают промис.
async function exampleFunction() {
return Promise.resolve("Привет");
}
Ключевое слово await
делает JavaScript стопориться до тех пор, пока промис не будет выполнен, после чего возвращает его результат.
// Async function
async function asyncFunc() {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
}
Синхронность представляет собой блокировку или ожидание завершения операции перед продолжением выполнения кода. В то время как асинхронность — это возможность продолжить выполнение кода, не дожидаясь завершения асинхронной операции.
Синтаксис async/await помимо более чистого кода также обеспечивает более простое управление ошибками. Применяя async/await, можно использовать стандартный синтаксис try/catch для обработки ошибок, что может быть более интуитивным, чем обработка ошибок с помощью промисов.
async function asyncFunc() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Ошибка:', error);
}
}
Использование async/await сокращает количество кода, необходимого для работы с промисами и обработки ошибок, делает ваш код более чистым и легко читаемым.