Доброго времени суток.
Перечитал уже много статей про асинхронность в js и её понимание, но никак не могу понять что это такое.
В подавляющем большинстве ресурсов, которые я изучил приводится пример с использованием
setTimeout
и Промисов (но я с ними еще не начал разбираться "вплотную").
Как я понял, setTimeout начинают выполнение переданного в них кода (т.е. кода внутри переданной в них callback функции) после того, как выполнится весь другой код, не связанный с setTimeout'ами и после этого callback'и из setTimeout'ов попадают в стэк вызовов в зависимости от того, какие у них были выставлены задержки.
Вопрос: как нам это помогает победить выполнение кода последовательно в один поток, если это просто смещение выполнение кода по времени? Т.е. это просто переносит выполнение кода на будущее.
Возможно я не так понимаю что из себя представляет ассинхронность в js. На мой взгляд это когда можно, например, скачивать из js кода 2 и более файлов одновременно или одновременно решать 2 и более не связанных между собой математических уравнения, а не последовательно как это делает js.
И ведь если скачивание файлов или решение уравнений раскидать по разным setTimeout с минимальными задержками, они ведь не будут решаться параллельно, а просто выстроятся в последовательную очередь только после определенной задержки.
P.S.
Пожалуйста, не кидайте мне ссылки на статьи, где примеры с setTimeout. Вот последнее, что я прочитал и заданный вопрос не решился: