Синхронный и асинхронный JavaScript
JavaScript работает в одном потоке. Это означает, что он выполняет только одну задачу за раз. Чтобы писать эффективный код, необходимо понимать, как он обрабатывает задачи.
Синхронный JavaScript
Синхронный код выполняется строка за строкой. Каждая задача ждет завершения предыдущей. Это называется блокировкой. Если одна задача занимает много времени, вся программа останавливается.
- Выполнение: фиксированная последовательность.
- Блокировка: Да.
- Сложность: Простая.
- Лучше всего подходит для: простых последовательных задач.
Асинхронный JavaScript
Асинхронный код выполняется независимо. Задачи не блокируют другой код во время ожидания. Это называется неблокирующим выполнением. Задача запускается в фоновом режиме и уведомляет вас по завершении.
- Выполнение: задачи выполняются независимо.
- Блокировка: Нет.
- Сложность: Выше.
- Лучше всего подходит для: вызовов API, таймеров и операций с файлами.
Три способа обработки асинхронных задач:
- Callbacks: функция, которая запускается после завершения задачи.
- Promises: объект, представляющий завершение или неудачу операции.
- Async/Await: самый чистый метод. Он позволяет писать асинхронный код так, будто он синхронный, не блокируя поток.
Распространенные асинхронные операции:
- Таймеры:
setTimeout() - Вызовы API:
fetch() - Чтение файлов:
readFile() - События пользователя:
addEventListener()
За это отвечает Event Loop. Он использует Call Stack, Web APIs и Callback Queue для управления несколькими задачами одновременно.
Резюме:
- Синхронный: одна за другой. Блокирует выполнение.
- Асинхронный: независимые задачи. Не блокирует.
- По умолчанию в JavaScript: синхронный.
Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f
Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69