Немного хотел бы поправить. Микрозадачи приходят только из кода. Обычно они создаются промисами: выполнение обработчика .then/catch/finally становится микрозадачей. Также есть специальная функция queueMicrotask(func) Иначе могут возникать ошибки на подобных примерах. Пример: console.log(1) new Promise(res => { console.log(2) res() }) console.log(3)
Я если честно плохо понимаю зачем это нужно знать, в спецификации ecma нет таких понятий как micro и macro task, это всё специфика web api определенных браузеров, какой шанс, что explorer будет следовать той же логике, что и хром ? Я не представляю себе реальную задачу где нам нужна была бы гарантия выполнения асинхронных операций.
Ивент луп это не "то что исполняет задачу". Это все в целом, вся петля событий которые происходят в браузере при работе потока кода. Стэк, апи, две очереди задач (хотя ты рисуешь одну почему-то)
@@egerr10 Хаха, не поверишь, сейчас освежаю память после диплома, как раз для собеса)) Специально заглянул в комменты, так как вижу, что автор не совсем правильно всё рассказывает. Кстати есть сайт latentflip-loupe, там видно работу кода по лупу.
Получается если я сделаю сеттаймаут с выводом сообщения через секунду. Но при этом потом сделаю долгую операцию подсчета например факториала на 10 секунд, то сеттаймаут отработает только через 10 секунд?
Все верно, промис если вызовет промис они исполнятся друг за другом. Макротаски могут выполняться только по одной за цикл. Пока стек не очистится вторая макротаска не выполнится. Промисы же могут полностью заблокировать поток как и бесконечный for
Жалка пародия на названия книг Кайла Симпсона. Изучил бы что ли черновики того как происходит вся производственная цепочка, а то скудный setTimeout и Promise это просто смешно, для такого громкого названия.
Спасибо большое! Из десятка просмотренных видео по event loop - это лучшее!
Немного хотел бы поправить.
Микрозадачи приходят только из кода. Обычно они создаются промисами: выполнение обработчика .then/catch/finally становится микрозадачей.
Также есть специальная функция queueMicrotask(func)
Иначе могут возникать ошибки на подобных примерах. Пример:
console.log(1)
new Promise(res => {
console.log(2)
res()
})
console.log(3)
Классное и простое объяснение, спасибо!
Вместо «ты» в названии должно было быть «я» ))
С учетом того что он от силы рассказал 5% от всего event loop
Это лучшее обьяснее из всех что я видел, автор прост и гениален
Я если честно плохо понимаю зачем это нужно знать, в спецификации ecma нет таких понятий как micro и macro task, это всё специфика web api определенных браузеров, какой шанс, что explorer будет следовать той же логике, что и хром ? Я не представляю себе реальную задачу где нам нужна была бы гарантия выполнения асинхронных операций.
Наверное лучшее объяснение! Круто! Спасибо!
Самое лучшее объяснение
Спасибо за видео. Коротко, ясно, по делу. Супер.
Тембр голоса приятный, спасибо за информацию, сильно благодарен! Сходу лайк и подписка!
После курсов и куча практики еще видео про это, не понял как работает цикл событий, но на этом видео уже представления имею, спасибо
Ивент луп это не "то что исполняет задачу". Это все в целом, вся петля событий которые происходят в браузере при работе потока кода. Стэк, апи, две очереди задач (хотя ты рисуешь одну почему-то)
Отлично спасибо большое очень понятно
Супер понятно!
Неправильная схема CallStack: функции туда попадают поочередно, лол
Видео должно называться "Ты не знаешь как работает eventloop, и я тоже "
сам чуть не поперхнулся. не дай бог после таких объяснялок начать рассказывать на собесе как всё это работает)
@@egerr10 Хаха, не поверишь, сейчас освежаю память после диплома, как раз для собеса)) Специально заглянул в комменты, так как вижу, что автор не совсем правильно всё рассказывает. Кстати есть сайт latentflip-loupe, там видно работу кода по лупу.
Очень хорошо объяснил! Спасибо, подписался !
страшно
если бы мы знали как это работает, но мы не знаем как это работает...
Promise никакого отношения не имеет к WebAPI, Promise это внутренний механизм JS, описанный в спецификации ES.
Спасибо, очень круто и наглядно объяснил. Я в целом представлял как это работает, но и тут кое что подчерпнул.
Очень хороший разбор)
1. Console log 1
2. Console log 5
3. Promise 3
4. setTimeout 2
5. setTimeout 4
Можете рассказать из-за чего возникает Event Loop lag? 😢😢
У меня в NodeJS приложении доходит до 20 мс.... И сбрасывается только после перезагрузки
Ладно, уговорил , садись, сдал.
Действительно, я не шарил) конкретно не знал, что промися проскочит первой. Никогда не задумывался об этом просто
ответил правильно на задачу про консоль логи, потому что я с канала ulbi ))
ulbi рулит)
такая же фигня, ulbi оч доходчиво объяснил про event loop
Поддержу) не в обиду автору. Я тоже правильно ответил. Хотя я вообще по питонам😂
Получается если я сделаю сеттаймаут с выводом сообщения через секунду. Но при этом потом сделаю долгую операцию подсчета например факториала на 10 секунд, то сеттаймаут отработает только через 10 секунд?
Да, все верно. Задачи в очереди будут ждать, пока не освободится колл стек.
A next tick очередь?
Вроде микрозадачи сразу все какие есть исполняются ,макро по одной.
Все верно, промис если вызовет промис они исполнятся друг за другом. Макротаски могут выполняться только по одной за цикл. Пока стек не очистится вторая макротаска не выполнится. Промисы же могут полностью заблокировать поток как и бесконечный for
Это лучшее объяснение работы "EVENT LOOP" в русском сегменте youtube! Спасибо вам большое за труд!
в task queue можно было бы давить разделение на микро и макро
если только это браузер.
Можно было бы сделать пример по сложнее.
Классное объяснение, спасибо, давайте ребята лайки коменты не жалеем, надо продвигать таких авторов.
А какое отношение промисы имеют к WebAPI?)
fetch
Классная подача материала! Было бы интересно посмотреть видео про замыканияю
Жалка пародия на названия книг Кайла Симпсона. Изучил бы что ли черновики того как происходит вся производственная цепочка, а то скудный setTimeout и Promise это просто смешно, для такого громкого названия.
красава
Видос пушка