Промисы не работают параллельно
Промисы работают асинхронно, а не параллельно. Асинхронно это про подождать пока результат придёт и до тех пор заниматься другими делами. Где тут параллельность?
Имеется ввиду, что один основной поток, инстанс один, в дочерних потоках обрабатываются промисы и возвращаются обратно в основной поток
О, снова вы ^^ Объясню. Сам _javascript_ – однопоточен, да. Но любые _внешние_ действия – параллельны! Вы можете попросить код скачать два файла сразу – и они скачаются сразу. Вам не нужно ждать их по-очереди (но если файлов не два, а сто – то лучше всё-таки ждать…), вы фактически получите оба моментально, независимо от того, сделаете Promise.all или нет. Но при этом _обработка_ результатов запросов – всегда будет однопоточной, последовательной. Пример: // p1 и p2 – это от axios p1.then(function(){console.log(1)}); p2.then(function(){console.log(2)}); console.log(0); – вы пошлёте оба запроса одновременно, и получите сначала 0, 1 а потом 2, или сначала 0, 2 а потом 1, в зависимоти от того, кто из них вернулся первее. Но «время» между 0 и 1 (или 0 и 2) будет явно больше, чем между 1 и 2 (или 2 и 1), потому что они скачаются фактически вместе, просто обработка пройдёт по-очереди.
Обсуждают сегодня