В чем разница между асинхронностью и многопоточностью

«В чем разница между асинхронностью и многопоточностью» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Асинхронность — это подход, при котором операции выполняются неблокирующе, освобождая основной поток для других задач. В JavaScript это реализуется через колбэки, промисы и async/await. Многопоточность — параллельное выполнение кода в нескольких потоках (например, Web Workers в браузере).

Пример асинхронности:

async function fetchData() {
  const response = await fetch('api/data');
  const data = await response.json();
  console.log(data);
}

Ключевые отличия:

  1. Асинхронность работает в одном потоке, многопоточность — в нескольких
  2. В JS асинхронность реализована через event loop, а многопоточность — через Web Workers
  3. Асинхронность не требует синхронизации, в отличие от многопоточности