Как работает Event Loop в JavaScript + примеры

Sdílet
Vložit
  • čas přidán 28. 07. 2024
  • Разберём теорию по работе JavaScript + рассмотрим множество примеров работы синхронного и асинхронного кода.
    ❤️ Мой telegram канал: t.me/webelart
    ❤️ Мой сайт: webelart.com/
    ❤️ Исходники из видео: / 58097129
    ❤️ Ссылка на голосовалку по видео: forms.gle/ahhftfZQNN6QVEVc9
    Список рекомендуемых видео:
    🔥 Учимся использовать стек и очередь в JavaScript - • Учимся использовать ст...
    🔥 Рекурсия и стек в JavaScript на примерах - • Рекурсия и стек в Java...
    🔥 Разбор Promise и создание собственной имплементации MyPromise - • Разбор Promise и созда...
    🔥 Пишем вместе throttle и debounce - • Пишем вместе throttle ...
    🔥 Филипп Робертс: Что за чертовщина такая event loop? - • What the heck is the e...
    Список рекомендуемых ссылок:
    🍀 Concurrency model and the event loop - developer.mozilla.org/en-US/d...
    🍀 Что ты такое, Event Loop? Или как устроен цикл событий в браузере Chrome - habr.com/ru/post/461401/
    00:00 введение.
    00:52 теория работы Event Loop
    04:49 запуск кода и стек вызовов
    07:44 максимальный размер стека JS
    09:34 блокировка выполнения кода
    11:12 асинхронный код setTimeout
    18:39 гарантия выполнения кода setTimeout
    19:04 асинхронный код - Promise
    24:00 асинхронные колбеки
    24:45 колбеки на постоянные события
    26:37 синхронные колбеки
    27:49 циклы
    28:12 циклы с асинхронным выполнением
    30:37 рендер страницы
    Рекомендую посмотреть ВСЕ ВИДЕО на моём канале! 😈
    Я рассматриваю различные темы веб-разработки. На текущий момент: профессиональный JavaScript, вёрстка, примеры на чистых технологиях (React, NodeJs, JS, CSS, HTML) и опыт в 10+ лет.

Komentáře • 91

  • @dr.margulis7773
    @dr.margulis7773 Před 2 lety +10

    Одно из самых нужных, подробных и важных видео на канале. Спасибо, Елена. 👍👍👍👏

  • @YuriiKratser
    @YuriiKratser Před 2 lety +22

    Лен, спасибо тебе большое! Всегда рад твоему контенту. Ты всегда затрагиваешь глубокие, сочные темы в js. Уважение тебе.

    • @webelart
      @webelart  Před 2 lety +2

      Юра, спасибо за комментарий, очень приятно! ❤️

  • @boardsofdagestan
    @boardsofdagestan Před 2 lety +16

    Не раскрыта тема микро и макротасков - промисы и, например, колбеки из таймаутов отправляются в совершенно разные очереди. Выполнение задач из микротасков имеет приоритет перед появившимися новыми задачами в макротасках.

    • @webelart
      @webelart  Před 2 lety +5

      Здесь ещё надо погружаться, чтобы лучше разобраться. Поэтому пока вот такое первое приближение. Я думаю в будущем покрою эту тему более широко. Спасибо за комментарий!

    • @YuriiKratser
      @YuriiKratser Před 2 lety +2

      Лена, ты не пугайся этому комменту. Просто сейчас вопрос про ивент луп входит в топ 3. И каждый маломальский мидл является в этой теме экспертом.

    • @webelart
      @webelart  Před 2 lety +5

      @@YuriiKratser Всё нормуль :))) А если тема входит в топ, то это вообще огнище! 😍

  • @maxet2374
    @maxet2374 Před 2 lety +3

    оч полноценное и полезное видео

  • @andreinebolei
    @andreinebolei Před 2 lety +8

    Очень понятно объясняете, продолжайте пожалуйста!

  • @user-glory-of-ukraine
    @user-glory-of-ukraine Před 2 lety +1

    Хорош видос, спасибо!!

  • @spllit9212
    @spllit9212 Před 2 lety +1

    спасибо за полезности)

  • @caveofmovies8597
    @caveofmovies8597 Před 2 lety +1

    спасибо, очень крутое видео

  • @olegdegterov1595
    @olegdegterov1595 Před 2 lety +2

    Елена спасибо за хорошее видео. По пункту 7 события, такие как обработчики событий onKlick, могут заблокировать код (в части того что прилетает в web api) т.к. они добавляются в web api после идут в macrotask queue и после по очереди в call stack. И если их очень большое количество, то события которые тоже поступают по такому пути (web api после идут в macrotask queue и после по очереди в call stack.) будут выполнены после множества onClick. Таким образом performance будет не очень)

    • @andTutin
      @andTutin Před rokem

      всё не так. заблокировать поток могут микротаски, а туда колбеки из промисов попадают, queueMicrotask и requestAnimationFrame (не уверен)

  • @MrKu39
    @MrKu39 Před 2 lety +8

    Отличное видео ! Понравилась подача столь важной и нужной темы. Еще бы добавить информацию про макро и микротаски и было бы вообще шикарно ! Спасибо !

  • @svetlanazheleykina4113

    Спасибо!🙌

  • @antonasipenka2941
    @antonasipenka2941 Před 2 měsíci

    Интересный видос, с интересными примерами, только хотелось бы услышать еще про макро и микро таски

    • @webelart
      @webelart  Před 2 měsíci

      Есть ещё одно видео на канале, как раз про очереди разных видов.

  • @user-qs9sv3sx6i
    @user-qs9sv3sx6i Před 2 lety +4

    Это шедевр. Дошло не с первого раза. пересмотрел раза 3, и попутно перематывая на 2-3 минуты назад, потеряв связь. Но оно дошло. Ребятушки, всем советую.

    • @user-cm5bw7ck1y
      @user-cm5bw7ck1y Před 2 lety +1

      Пытается объяснить вещи на языке понятном уже тем людям, которым это разъяснять вообще не надо. ЗАЧЕМ🤯 Что #происходитслюдьмидура.

    • @user-qs9sv3sx6i
      @user-qs9sv3sx6i Před 2 lety

      @@user-cm5bw7ck1y ну тут я не соглашусь, мне очень даже зашло, пусть и не сразу. А какие слова непонятны?

  • @ArtyomStouch
    @ArtyomStouch Před 2 lety +3

    Спасибо Елена, очень познавательно.

  • @eugenebrowsk3624
    @eugenebrowsk3624 Před 2 lety +5

    Случайно попал на канал. Очень годный контент👍
    Странно что так мало подписчиков.

  • @egoist2956
    @egoist2956 Před 2 lety +2

    Лайк...!

  • @deniskorablev2648
    @deniskorablev2648 Před 2 lety +2

    опачки, обожаю твои гайды :3, спасибо помогаешь очень

    • @webelart
      @webelart  Před 2 lety +2

      Спасибо! 😍 Надеюсь это видео тоже зайдёт!

  • @NoName-zh7cc
    @NoName-zh7cc Před 2 lety +3

    Офигенный контент, спасибо!

  • @adam-front
    @adam-front Před 2 lety +1

    Ну тут лайк прям однозначно 👍👍 большое спасибо

  • @doge8633
    @doge8633 Před 7 měsíci

    Все что предоставляется через WEBapi - является асинхронными, поэтому использования колбека внутри document.querySelect является асинхронным.

  • @Dmitrijserg
    @Dmitrijserg Před rokem +1

    Лен, огромный кайф смотреть твои видео. Мотивируешь и вдохновляешь.

  • @avazshukurullayev
    @avazshukurullayev Před 2 lety +1

    Cool

  • @alsusayfulina1865
    @alsusayfulina1865 Před rokem +2

    Спасибо! Появилось более целостное понимание этой штуки)

  • @Ramosok
    @Ramosok Před 2 lety +1

    Крутой контент!!!

  • @kokochomuchacho3619
    @kokochomuchacho3619 Před rokem +2

    Это самое лучшее обьяснение лупа. Два дня сидел читал статьи, но во всех оставался осадочек недопонимания, а после просмотра вашего видео могу с чистой совестью сказать что все понял. Лучшая, я подписался

    • @webelart
      @webelart  Před rokem

      Есть ещё одно czcams.com/video/kZFLHCz2a30/video.html
      Оно более расширенное с хорошей практикой. Рекомендую следующим ещё для большего понимания :)

  • @DIMAWARCRAFT3
    @DIMAWARCRAFT3 Před rokem

    в основном мне твои виде не нравятся. Но конкретно это видео супер. Разбираешь пример и я думаю "а что будет если добавить это сюда" и следующий пример у тебя такой как я подумал и так постоянно на протяжении видео)

    • @webelart
      @webelart  Před rokem

      Даже не знаю, что тут ответить. Вроде бы и унизили и комплемент сказали. Знаете это как волосы у тебя конечно красивые, но уши пиздец…

  • @user-en6el6vc1i
    @user-en6el6vc1i Před rokem +1

    Хорошее видео, но хотелось бы услышать про поведение eventloop при использовании async/await, просто я не очень понимаю логику по которой весь синхронный код после await тоже попадает в очередь

    • @webelart
      @webelart  Před rokem

      Вот вам видео czcams.com/video/kZFLHCz2a30/video.html

    • @user-en6el6vc1i
      @user-en6el6vc1i Před rokem

      @@webelart то что нужно, спасибо

  • @razvalnuy
    @razvalnuy Před 10 měsíci +1

    Очень хорошо объясняете, благодарю

  • @Marina-bh8iw
    @Marina-bh8iw Před rokem +1

    Спасибо большое за такое простое объяснение для новичков!

  • @user-uy7jy8bs2r
    @user-uy7jy8bs2r Před 2 lety +1

    Почему все видео с названием Event Loop в JavaScript описуют цикл в браузере. У Ноды цикл работает немного иначе. Отчего нету логической градации на цикл на фронте и бэке?

  • @denisshulga7539
    @denisshulga7539 Před 10 měsíci

    Понравилось ) Только для меня теперь новая непонятка )) если есть отдельная очередь рендера, то что раньше попадает в колстек - что-то из render queue или из task queue? Или как это происходит

    • @webelart
      @webelart  Před 10 měsíci

      Есть еще одно видео czcams.com/video/kZFLHCz2a30/video.html

  • @fdskaasdyt
    @fdskaasdyt Před 2 lety +1

    А почему не выводится консоль лог на 85 строке?

    • @Natahin
      @Natahin Před 2 lety +1

      он выводится. В консоли из-за 85 строки появляется Е. (То что передали в resolve попадает в .then)

  • @Maxim9575
    @Maxim9575 Před rokem

    Доклад Джейка Арчибальда получше будет чем у Филиппа. Там уже осовременено рассказывается. По этапам, что куда. У вас чувствуется доклад Филиппа Робертса :)
    Учитывая что вы пробовали написать Promise на js, было бы неплохо почитать про event-loop в спецификации whatwg ну и разные гугловские статьи по модели браузера, где рассказывается рендер часть.

    • @webelart
      @webelart  Před rokem

      Да его смотрела, смысле Филиппа :)
      Есть ещё одно видео czcams.com/video/kZFLHCz2a30/video.html
      Кидайте ссылку, что за доклад?

    • @Maxim9575
      @Maxim9575 Před rokem +1

      ​@@webelart I am writting this reply in english due with comment's system removes all my replies instantly. Before this I mentioned the report, you can easily find it if you will make search request in address URL with words: "Jake Archibald in the Loop"

    • @webelart
      @webelart  Před rokem

      @@Maxim9575 ❤

  • @eradzhmirzoev1330
    @eradzhmirzoev1330 Před 2 lety +7

    музыка отвлекает

  • @vladimircreator
    @vladimircreator Před 9 měsíci

    11:10 что за склейка? Я не понял, что там дальше объяснялось.

    • @webelart
      @webelart  Před 9 měsíci

      ну учить, че ты думаешь я с тобой сюсюкать тут буду что ли.

  • @yurydaszukiewicz1033
    @yurydaszukiewicz1033 Před rokem

    На хабре написано в корне не так

  • @vladimircreator
    @vladimircreator Před 9 měsíci

    16:31 1000 секунд)

  • @Anonym-li8eb
    @Anonym-li8eb Před 8 měsíci +1

    Спасибо, очень полезное видео :)

  • @pavelbezdenezhnykh6793
    @pavelbezdenezhnykh6793 Před 2 lety +1

    На середине ролика приходит осознанность, трансформируется мозг, появляется возможность вызывать дождь, огонь, ветер... Будьте осторожны!

  • @externuz
    @externuz Před 2 lety +3

    Если бы не "Стек колл вызовов" - было бы неплохо. А так, конечно, режет очень слух.

  • @cheesecheesson9842
    @cheesecheesson9842 Před 2 lety +2

    какой только превьюхой не заманивают на контент.

  • @vlad_starkovsky
    @vlad_starkovsky Před 2 lety +2

    Подробный разбор эвентлупа, а ни слова о микротасках, куда как раз попадает then но не попадает setTimeout

    • @webelart
      @webelart  Před 2 lety +5

      Как я уже упоминала в одном из комментариев, здесь нужно ещё погружение. Изначально я не ставила для данного видео задачу покрыть всё и вся. Я здесь ещё и про V8 не упомянула, не рассказала про макро, микро таски. Не покрыла setImmediate(), process.nextTick() и т.д., которые больше к nodejs относятся и рендер по факту вскользь упомянула.
      Я люблю, когда изучения происходят наслоением знаний. Т.к. когда стремишься сразу и всё изучить, рассказать, показать. Обычно получается какая-то каша. Нужно время для укладки информации, потом следующая порция. Видео получилось классным и покрывает много аспектов.
      Тем не менее, спасибо за комментарий, я увидела, что тема микро и макро тасков интересна. ❤️

  • @romanmed9035
    @romanmed9035 Před 2 lety +1

    весело на собеседовании рассказать, что присутствует такая штука, которая передает другой штуке, пока выполняется очередная штука. а потом вар рассказать. экзаменующий будет в шоке от потока знаний и уж точно на сеньора сразу возьмут с зарплатой в 3 раза выше стандартной.

    • @webelart
      @webelart  Před 2 lety

      Называйте функция, переменная и т.д., если вас слово штука триггерит. А вот про шок экзаменующего - это исключительно ваша фантазия.

    • @romanmed9035
      @romanmed9035 Před 2 lety

      @@webelart для эксперимента именно так и сделал сегодня. и это будет чудом если меня туда возьмут.

    • @webelart
      @webelart  Před 2 lety

      @@romanmed9035 Скиньте мне минуту, неужели всё штукой называла :D
      Да ладно вам писимистичничать, если верно решили, должно быть хорошо.
      Но в любом случае, поделитесь результатом, интересно ❤

    • @romanmed9035
      @romanmed9035 Před 2 lety

      @@webelart об этом видео можно вообще забыть как и не было его. поскольку Вы выпустили недавно новое с полным описанием всего как оно и требуется для понимания, весь комплекс параметров. с почти теми выражениями какие используют экзаменаторы. и это совершенно два разных уровня преподавания, как будто между ними не несколько месяцев прошло или разные люди рассказыывают. огромный профессиональный рост лектора виден даже мне. и информация преподносится в полном объеме со всеми демонстрациями. буду именно по Вашей лекции это пытаться понять. я ее не успел полностью посмотреть. но мне как-то задали вопрос в другом месте о промисе в сетинтервале. и инетрвале в промисе. надеюсь в том что осталось, у Вас это показано. спасибо за ответы и за Ваш труд.

    • @webelart
      @webelart  Před 2 lety

      @@romanmed9035 Спасибо, мне очень приятно!

  • @user-rg4oj3fl1t
    @user-rg4oj3fl1t Před 4 měsíci

    немного быстро в коде бегаешь а так норм

  • @vladimircreator
    @vladimircreator Před 9 měsíci

    13:05 говоришь 1 секунду, а ставишь 0.1 секунд.

    • @webelart
      @webelart  Před 9 měsíci

      да пошел ты на х*й как хочу так и монтирую 🤌

    • @vladimircreator
      @vladimircreator Před 9 měsíci

      @@webelart 😂

  • @user-yx4zt2ev2g
    @user-yx4zt2ev2g Před rokem +1

    все круто, только единственный минус, музыка на заднем фоне громковата, пожалуйста, чуть тише, если можно сделайте в следущий раз

  • @Dmitrijserg
    @Dmitrijserg Před rokem

    Вообще, тема очень сложная, не для новичков в JS. Разбор материала мне понравился, но очевидно, что этот ролик нужно смотреть долго, постоянно останавливаясь и перематывая, и проверяя код в конспли самому. Джуну, думаю, часа три нужно, чтобы всё здесь сказанное и показанное усвоить. Минимум.

    • @webelart
      @webelart  Před rokem +1

      Есть ещё одно видео про event loop czcams.com/video/kZFLHCz2a30/video.html

    • @Dmitrijserg
      @Dmitrijserg Před rokem

      @@webelart спасибочки, посмотрю обязательно.

  • @Alexander-fn9kv
    @Alexander-fn9kv Před rokem

    Ты лучше расскажи как с этими знаниями, пооектами на github найте работу? Зачем учить, если работы нет

    • @webelart
      @webelart  Před rokem

      Постепенно и эти знания потребуются. От себя только скажу, ищите, пробуйте и всё получится!

  • @ilyapokotilo9273
    @ilyapokotilo9273 Před rokem

    Видео для технарей, сплошная боль, столько неточностей.... Но хоть как-то объяете, на том спасибо

    • @webelart
      @webelart  Před rokem +1

      Посмотрите вот это ещё, гораздо более точно и подробнее там объясняю czcams.com/video/kZFLHCz2a30/video.html

    • @webelart
      @webelart  Před rokem +1

      Успехов вам в изучении ❤

    • @ilyapokotilo9273
      @ilyapokotilo9273 Před rokem

      @@webelart Спасибо за обратную связь!))

  • @yurydaszukiewicz1033
    @yurydaszukiewicz1033 Před rokem

    На хабре написано в корне не так

    • @webelart
      @webelart  Před rokem

      Я использовала mdn

    • @yurydaszukiewicz1033
      @yurydaszukiewicz1033 Před rokem

      @@webelart Это я затупил , нужно сразу было разобраться , а потом писать. Сорри