JavaScript Функції, Потоки та Асинхронне Виконання
Вам потрібно розуміти, як JavaScript працює «під капотом».
Ось розбір функцій, процесів, потоків та стилів виконання.
Типи функцій JavaScript
- Іменована функція: Використовує конкретне ім'я. Це полегшує налагодження.
- Анонімна функція: Не має імені. Їх часто використовують як колбеки.
- Функціональний вираз (Function Expression): Ви присвоюєте функцію змінній.
- Стрілкова функція (Arrow Function): Більш короткий синтаксис із використанням символу =>.
- IIFE: Негайно викликаний функціональний вираз (Immediately Invoked Function Expression). Вона виконується одразу після визначення.
Процес проти Потоку
Процес — це програма, що працює на вашому комп'ютері.
- Кожен процес має власну пам'ять.
- Якщо один процес завершується з помилкою, інші продовжують працювати.
- Приклад: Chrome та Spotify — це окремі процеси.
Потік (Thread) — це мала одиниця всередині процесу.
- Потоки використовують спільну пам'ять.
- Вони дозволяють одній програмі виконувати багато завдань одночасно.
- Приклад: Усередині Chrome один потік рендерить сторінку, тоді як інший обробляє ваші кліки миші.
Синхронне проти Асинхронного
JavaScript є однопотоковим. Він обробляє по одному завданню за раз, використовуючи стек викликів (call stack).
Синхронне виконання:
- Завдання виконуються одне за одним.
- Кожне завдання чекає на завершення попереднього.
- Повільні завдання блокують виконання вашого коду.
Асинхронне виконання:
- Завдання виконуються у фоновому режимі.
- Код не зупиняється під час очікування завершення завдання.
- Для цього використовуються Web APIs, черга викликів (Callback Queue) та цикл подій (Event Loop).
Як працює асинхронність:
- JavaScript надсилає завдання (наприклад, таймер) до Web API.
- Основний код продовжує виконуватися.
- Щойно завдання завершується, воно переміщується до черги викликів (Callback Queue).
- Event Loop переміщує його до стека викликів (Call Stack), коли стек стає порожнім.
Це дозволяє вашим веб-додаткам залишатися швидкими та чуйними.