Макро и Микро задачи в JavaScript #easyit #js #javascript

preview_player
Показать описание
Разбираемся как работают макро и микро задачи, как добавить функцию в очередь вручную, как повлиять на отзывчивость интерфейса.

Исходные файлы проекта здесь:

Сериал "Создание SPA приложения на чистом JS":

Полезные видео по настройке webpack:

Самый простой способ установить nodejs на Linux и Mac:

#easyit #javascript #js #vanillajs
Рекомендации по теме
Комментарии
Автор

я еще не встречал более сложного, запутанного и непонятного объяснения. Видео сохранил, буду им пугать кого-нибудь)) спасибо!

alexrv
Автор

Я в ивент-лупе вроде как разбираюсь и с микро и макро тасками тоже давно решил вопрос. Просто интересно было взглянуть на твой ролик. Увидел необычный пример с вызовом тасок по клику, стало интересно взглянуть на остальные ролики и блин мужик, спасибо тебе огромное! Очень интересный контент! Однозначно подписка!=)

mvbujyn
Автор

Очень рад что нашел твой канал, лайк за контент

yqydxcg
Автор

Очень познавательное видео. Спасибо большое автору!

ArtemBorovikov
Автор

Отличные примеры, с удовольствием посмотрел :) Спасибо!

---Maksim---
Автор

Огромное спасибо! Всё доступно и понятно

mbkpblw
Автор

Если идея была сделать простое сложным, то отлично получилось.

johnstrayk
Автор

Спасибо огромное за видео!
Подскажите, пожалуйста, а что будет в случае, если мы напишем setTimeout(() => console.log("Macrotask"), 1000); fetch(someUrl).then(() => console.log("Microtask"));
Предположим, что fetch отработает в один момент с setTimeout. Перед выполнением произойдет первая перерисовка интерфейса, следовательно, весь основной код выполнится и добавятся одновременно в Macrotask queue console.log("Macrotask") и в Microtask queue console.log("Microtask").
Неужели в данном случае первым выполнится callback из setTimeout : console.log("Macrotask"), а только после него - console.log("Microtask") из fetch, так как исходя из видео сначала выполняется только одна задача из Macrotask queue (в нашем случае console.log("Macrotask")), а потом все задачи из Microtask queue (console.log("Microtask"))?
Заранее благодарю за ответ!

MS-whky
Автор

Мне осталось не понятным - почему обработчик из fetch попадает в макрозадачу, ведь под его капотом используется промис? Почему тогда промис и фетч отрабатывают по разному?

juliakorolenko
Автор

16:00 лучше использовать request requestAnimationFrame. А разве он не вызывается не чаще чем 1сек/60?

aleksandrkim
Автор

Эммм!!!
Микрозадачи приоритетнее макрозадач! Сначала выполняются все микро, потом макро по одной

romandeveloper
Автор

Для тех кто не понял почему setTimeout в 3 примере работает так медленно, там задержка ноль это на самом деле около 4мс, поэтому проц не нагружается

johnkucharsky
Автор

Спасибо, очень полезное видео
Не хочу показаться глупым, но хочу задать вопросы

1. Функции которые не являются ни микрозадачами, ни макрозадачами мы называем синхронными?

2. Если js встречает сначала макрозадачу тайм-аут 0, а после микро - промис. Сначала произойдет микрозадача, а потом макро. Вот для каких случаев верно утверждение из видео, что выполняется одна макрозадача, а после все микрозадачи? Потому что сначала сработает промис и потом тайм-аут. И до этого видео я уверенно так и думал, приоритет - микрозадачи, после макро

denmccormik
Автор

Console.log это не макро. Автор сам не разобрался до конца. Но пример интересный

johnkucharsky
Автор

Страшные слова какие-то: сначала выполняются макрозадачи, потом микро😵‍💫
Это равносильно, что сеттаймаут выполнится первее, чем промис?

alexeyser