Асинхронность
Вы пишите код на JavaScript...🤔
В консоли сразу появляется вывод:
Через секунду вызывается наш callback:
JavaScript однопоточный язык - one function at a time! Каждая функция всегда выполняется до конца! Почему же вызов asyncFuncForOneSecond не заблокировал JS поток и дал выполниться console.log("THIRD") 🙄 ?
JavaScript тут ни при чем. Все асихнронные функции выполняются в отдельных потоках (threads) браузера и не мешают работать JavaScript движку. Такой подход называется многозадачность или concurrency - на уровне браузера код организован так, что отдельные задачи (в потоках браузерного процесса) конкурируют за ресурсы (ЦП). Наш ЦП понемногу выполняет каждую задачу, переключаясь на следующую (очень быстро), за счет чего не простаивает дорогое процессорное время.
Promises и async functions позволяют писать асинхронные задачи в синхронном стиле. За счет этого код читаем, а за кулисами асинхронные функции выполняются в потоках браузера, результаты поставляются в callback очереди, event loop их забирает и проталкивает в stack вызовов JavaScript движка.
Посмотреть/почитать
🔸Смотреть офигенный доклад про асинхронность от Ивана Пузыревского из Яндекс.
🔹Читать бумагу про promise от Barbara Liskov и Liuba Shrira аж от июня 1988 года!
#best_video
#asynchronous_frontbase
Вы пишите код на JavaScript...🤔
console.log("FIRST");
asyncFuncForOneSecond(callback);
console.log("THIRD");
В консоли сразу появляется вывод:
-> FIRST
-> THIRD
Через секунду вызывается наш callback:
-> some data as a result...
JavaScript однопоточный язык - one function at a time! Каждая функция всегда выполняется до конца! Почему же вызов asyncFuncForOneSecond не заблокировал JS поток и дал выполниться console.log("THIRD") 🙄 ?
JavaScript тут ни при чем. Все асихнронные функции выполняются в отдельных потоках (threads) браузера и не мешают работать JavaScript движку. Такой подход называется многозадачность или concurrency - на уровне браузера код организован так, что отдельные задачи (в потоках браузерного процесса) конкурируют за ресурсы (ЦП). Наш ЦП понемногу выполняет каждую задачу, переключаясь на следующую (очень быстро), за счет чего не простаивает дорогое процессорное время.
Promises и async functions позволяют писать асинхронные задачи в синхронном стиле. За счет этого код читаем, а за кулисами асинхронные функции выполняются в потоках браузера, результаты поставляются в callback очереди, event loop их забирает и проталкивает в stack вызовов JavaScript движка.
Посмотреть/почитать
🔸Смотреть офигенный доклад про асинхронность от Ивана Пузыревского из Яндекс.
🔹Читать бумагу про promise от Barbara Liskov и Liuba Shrira аж от июня 1988 года!
#best_video
#asynchronous_frontbase