JavaScript: Callstack и Event Loop

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ • 34

  • @yanbraverman2203
    @yanbraverman2203 3 роки тому +2

    Спасибо. Саша как всегда максимально доходчиво и понятно объясняет любые самые сложные темы.

  • @ВсеволодЗорин-л6н
    @ВсеволодЗорин-л6н 4 роки тому +9

    Вот так вот хорошо... Прям очень хорошо) вот в такие моменты возникает желание послушать что-нибудь ещё...)

  • @dmitrijponkin
    @dmitrijponkin 4 роки тому +7

    Отличное объяснение! Спасибо :))

  • @vishnyo
    @vishnyo 3 роки тому +1

    Лайк за простоту донесения материала

  • @developerabdulaev4768
    @developerabdulaev4768 3 роки тому +1

    Идеальное объяснение для меня.

    • @HillelITSchool
      @HillelITSchool  3 роки тому

      Идеальный комментарий для нас 🙂

  • @suslikest3708
    @suslikest3708 4 роки тому +1

    Фига се круто обьяснил, спасибо!

  • @Black1991Star
    @Black1991Star 4 роки тому +1

    Спасибо, за объяснение

  • @dmitrykarpovich186
    @dmitrykarpovich186 4 роки тому

    Спасибо! Оч наглядно

  • @noway1725
    @noway1725 4 роки тому

    08:22. Не совсем ясно, что имеется ввиду под "примерно 60 раз в секунду браузер пытается перерисовать содержимое документа"? Утверждается, что 60 раз в секунду браузер делает repaint?

    • @aleksandrgribanov
      @aleksandrgribanov 4 роки тому +1

      Имеется в виду подготовка каждого конкретного кадра. Этот процесс состоит из нескольких частей, в том числе и repaint. Но в рамках этого процесса подготовки кадра, некоторые шаги могут пропускаться, если браузер знает что JS не менял свойства элементов, которые влияют на конкретный шаг.
      Поэтому, если вы не меняете 60 раз в секунду свойство отвечающее за стадию paint, то и repaint не будет проходить 60 раз в секунду.
      В целом производительность UI отдельная интересная и глубокая тема.
      Немного подробностей можно почитать тут
      frarizzi.science/journal/web-engineering/browser-rendering-queue-in-depth (en)
      developers.google.com/web/fundamentals/performance/rendering (ru)

    • @noway1725
      @noway1725 4 роки тому

      @@aleksandrgribanov Спасибо за ссылки! Теперь понятно, что Вы имели ввиду.

  • @andrewdeiak6871
    @andrewdeiak6871 4 роки тому

    Полезно!

  • @Maxim9575
    @Maxim9575 3 роки тому +1

    Хорошее видео жаль без терминологии микро и макро задач. А так очень круто особенно, понравилась картина когда созданы обработчики событий и они сидят в web-API

    • @HillelITSchool
      @HillelITSchool  3 роки тому +1

      Спасибо, Максим! Рады, что вам понравилось.

  • @sadcode8017
    @sadcode8017 3 роки тому

    Спасиб, автор

  • @ms77grz
    @ms77grz 3 роки тому

    👍👍

  • @TrinoUNO
    @TrinoUNO 4 роки тому

    Я так понимаю если во время выполнения Slow Function продолжать нагружать стек, то пользователь еще дольше будет ждать?

    • @astrobrite540
      @astrobrite540 4 роки тому

      TrinoUNO как вы собираетесь нагружать стек

    • @TrinoUNO
      @TrinoUNO 4 роки тому

      @@astrobrite540 например между завершением Slow Function и Main() (допустим что мэйн это тоже какая то функция, а не скрипт) будет вызов еще какой то функции.

    • @andreygokhan6893
      @andreygokhan6893 4 роки тому

      @@astrobrite540 пользователь сам нагрузит стек часто кликая по неработающим элементам. Обычное поведение любого человека. Кстати , кто нибудь знает как приостановить клики в период блокировки стека?

    • @aleksandrgribanov
      @aleksandrgribanov 4 роки тому +1

      @@andreygokhan6893 Как вариант блокировать элементы управления. Например через аттрибут disabled или css свойство pointer-events

    • @mushnikov35
      @mushnikov35 4 роки тому

      @@aleksandrgribanov а как проверить что он кликает много раз или как проверить что стэк занят ??

  • @UserSo4reUsu75ry
    @UserSo4reUsu75ry 4 роки тому +1

    Все хорошо. Проблема лишь в том, что никто не рассказывает, что очередей задач на самом деле не одна и что в разных статьях называют её по разному callback queue, message queue и тд. Сложно найти материал, рассказывающий как в действительности устроен eventloop и вызов task, microtask и nexttick, animationframe. Все повторяют одно и тоже год за годом )

    • @Ekzalt
      @Ekzalt 4 роки тому +1

      Почему же никто? Вот профессиональный разбор Node.js EventLoop на русском: ua-cam.com/video/7f787SsgknA/v-deo.html

    • @UserSo4reUsu75ry
      @UserSo4reUsu75ry 4 роки тому

      @@Ekzalt да это наверно самое подробное видео за всё время )

  • @oliverreviews8496
    @oliverreviews8496 4 роки тому

    Стэк?)
    На сколько я знаю это называется стёк на русском, что кстати сразу дает понятие того, как это работает)
    Хотя видео рассказано круто, дополняет немного то, что читаешь в документации)

  • @tdd32
    @tdd32 4 роки тому +2

    доклад на уровне джуна

    • @phello57
      @phello57 3 роки тому

      а что не было сказано?

  • @kirillberezin8859
    @kirillberezin8859 4 роки тому

    Ахаха конечно, если есть авейт то нихрена не работает как обьяснили.

    • @Maxim9575
      @Maxim9575 3 роки тому +1

      await это уже работа с микро задачами, а объяснение было про callstack и eventloop, сам setTimeout является макро задачей, а асинхронные функции это уже микро задачи. Так что не нужно на автора гнать.

  • @b0dn4r_K
    @b0dn4r_K 4 роки тому

    Зачем мне джуны в рекомендациях?

  • @thegate4407
    @thegate4407 4 роки тому

    Однотипные видео