Назад к вопросам
Junior
116
questionbank

Какие способы работы с асинхронным кодом тебе известны?

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.