Junior
252
questionbank
В чем заключается разница между async/await и Promise?
Ответ от нейросети
sobes.tech AI
async/await - это синтаксический сахар над промисами. Он позволяет писать асинхронный код в более читаемом, синхронном стиле, используя ключевые слова async для функций, внутри которых используются await для ожидания разрешения промиса. Промисы же представляют собой объекты, представляющие конечное завершение (или сбой) асинхронной операции и ее результирующее значение.
| Особенность | async/await | Promise |
|---|---|---|
| Синтаксис | Более похож на синхронный код. | Использует методы .then(), .catch(), .finally(). |
| Читаемость | Зачастую более высокая, особенно при цепочках. | Может привести к "Callback hell" при сложных цепочках. |
| Обработка ошибок | Использует стандартный try...catch. |
Использует .catch() или второй аргумент в .then(). |
| Параллелизм | Требует явного использования Promise.all() или Promise.allSettled(). |
Может быть более явным, но менее читаемым без async/await. |
// Пример с Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Данные получены');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Пример с async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Данные получены');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();