JavaScript

Асинхронность в JS это что то типа многопоточности?

Я каждый день захожу по вкладкам и скачиваю файлы..
Асинхронность в JavaScript не является полноценной многопоточностью, как в некоторых других языках программирования. Вместо этого, JavaScript использует концепцию однопоточности событийного цикла (event loop).

В JavaScript выполнение кода происходит в одном основном потоке выполнения, но с помощью асинхронных функций и колбэков, JavaScript может эффективно обрабатывать задачи, которые требуют ожидания, такие как скачивание файлов или отправка сетевых запросов, без блокирования основного потока.

Когда вы запускаете асинхронную операцию, такую как скачивание файла, JavaScript продолжает выполнять другие задачи и события, асинхронная операция выполняется отдельно. Когда операция завершается, вызывается соответствующий колбэк или обрабатывается промис, позволяя вам продолжить работу с полученными данными.

Таким образом, асинхронность в JavaScript позволяет эффективно управлять задачами, которые требуют времени, не блокируя основной поток выполнения и обеспечивая отзывчивость интерфейса пользователя.
Гарик Симикян
Гарик Симикян
5 034
Лучший ответ
JS - однопоточный язык с кооперативной многозадачностью.
https://ru.wikipedia.org/wiki/Многозадачность#Совместная_или_кооперативная_многозадачность
Так что асинхронность реализуется в рамках одного потока: пока один процесс работает, все остальные стоят и ждут, когда до них дойдёт очередь.
Дастан Эрднеев
Дастан Эрднеев
87 948
JS однопоточный язык, но операции выполняются ассинхронно. Поток не ждёт соединения с сервером, а продолжает отрисовку страницы без остановки.
Асинхронность не равно многопоточность, а в JS, за редким исключением, многопоточности вообще нет, всё выполняется в одном Event Loop в однопоточном режиме.
IB
Igor Birukov
68 937
Это не мпногопоток, JS однопоточный, но в нем есть механизм EventLoop, позволяющий добиваться асинхронного выполнения инструкций.
Если интересно, вот почитай.
https://doka.guide/js/async-in-js/
Евгений Горн
Евгений Горн
32 273
Да, вполне возможно, что где-то под капотом создаётся новый поток под асинхронную функцию. Даже, скорее всего так и есть. Современные CPU оптимизированны под это. Новый ждущий поток не стоит практически ничего.
Многопоточность управляется извне, асинхронные вызовы контролируются изнутри процедуры
AS
Alexander Schneider
2 867