PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Как понять является ли операция асинхронной в коде JavaScript?

Асинхронность и Event Loop

Асинхронность операции понимают по признакам: возвращает Promise, принимает callback, помечена `async`, вызывается через `await`/`.then()`, или это известное async-API (fetch, setTimeout, работа с файлами/сетью).

Признаки асинхронной операции

Возвращает Promise

const result = fetch(url); // Promise
fetch(url).then(...);      // есть .then → async

Использует async/await

async function fn() {}     // async-функция → всегда Promise
await something;           // await → ожидание async

Принимает callback (старый стиль)

fs.readFile('file', (err, data) => {}); // callback → async
setTimeout(callback, 1000);

Известные async-API

  • Сеть: fetch, XMLHttpRequest, axios.
  • Таймеры: setTimeout, setInterval.
  • Файлы/I/O (Node): fs.readFile, потоки.
  • БД, IndexedDB, геолокация.

Документация/типы

TypeScript: возвращаемый тип Promise<T> → асинхронно.

Синхронные операции (для контраста)

  • Возвращают значение сразу (не Promise).
  • Арифметика, работа с массивами/строками, JSON.parse, Math.
  • Синхронные API: fs.readFileSync, localStorage.

Проверка результата

const result = someFunction();
if (result instanceof Promise) {
  // асинхронная
}

Практика

  • Если операция ждёт внешнего (сеть, файл, таймер) — почти всегда async.
  • Смотреть на возвращаемое значение (Promise) и сигнатуру (callback/async).

Коротко для собеседования

Асинхронность операции понимают по: возврату Promise (.then/await), пометке async, приёму callback, известным async-API (fetch, setTimeout, fs.readFile, IndexedDB), типу Promise<T> в TS. Синхронные — возвращают значение сразу (арифметика, JSON.parse, localStorage). Проверка — result instanceof Promise.

Другие вопросы раздела