Как понять является ли операция асинхронной в коде 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.