Какие способы работы с асинхронным кодом тебе известны?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Callbacks, Promises, async/await.
Callbacks: Функции, передаваемые в качестве аргумента в другие функции, которые вызываются после завершения асинхронной операции.
Promises: Объекты, предоставляющие более удобный способ управления асинхронностью по сравнению с колбэками. Имеют состояния pending, fulfilled и rejected.
// Пример Promise
function asyncOperation() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Операция завершена успешно!');
}, 1000);
});
}
asyncOperation()
.then(result => console.log(result))
.catch(error => console.error(error));
async/await: Синтаксический сахар над Promises, делающий асинхронный код более похожим на синхронный и улучшающий его читаемость.
// Пример async/await
async function performAsyncOperation() {
try {
const result = await asyncOperation();
console.log(result);
} catch (error) {
console.error(error);
}
}
performAsyncOperation();
Сравнение способов:
| Способ | Читаемость / Поддерживаемость | Обработка ошибок | Управление потоком |
|---|---|---|---|
| Callbacks | Менее читаемо (Callback Hell) | Сложно | Сложно |
| Promises | Улучшенная | Удобно (.catch) | Удобно (.then, .catch) |
| async/await | Лучшая | Удобно (try...catch) | Удобно (await) |
Наиболее предпочтительным способом в современных Node.js-приложениях является использование async/await из-за его читаемости и удобства. Promises остаются важным инструментом, особенно на более низком уровне реализации. Callbacks используются в устаревшем коде или для низкоуровневых операций в ядре Node.js.