Генераторы и асинхронные генераторы в JavaScript

Поделиться
HTML-код
  • Опубликовано: 2 дек 2024

Комментарии • 31

  • @anatolykobzisty9827
    @anatolykobzisty9827 4 года назад +13

    00:00 Способы объявления генераторов
    10:41 Пример генератора с yield
    15:54 Пример генератора с yield и return
    18:47 Получение значений из генератора циклом for...of
    21:04 Получение значений из генератора spead - оператором
    21:50 Метод next
    23:30 Пример генератора с yield * возвращающего итерируемые объекты
    25:05 Пример генератора с yield * возвращающего другие генераторы
    26:18 Метод return
    28:11 Метод throw
    29:05 Обобщение

  • @alexdr1279
    @alexdr1279 4 года назад +8

    елки палки... почему только сейчас я нашел этот канал?( Низкий поклон, Тимур!

  • @TimurShemsedinov
    @TimurShemsedinov  5 лет назад +15

    Дополню, что стеденты подсказали полезный пример использования .throw в асинхронном генераторе - это перехват ошибки в самом генераторе через try - github.com/HowProgrammingWorks/AsyncGenerator/blob/master/JavaScript/d-throw.js

  • @RockyTheDog756
    @RockyTheDog756 2 года назад +1

    Спасибо огромное за труд!

  • @anryzhov
    @anryzhov 5 лет назад +5

    Благодарю!

  • @kirillpospolitaki860
    @kirillpospolitaki860 3 года назад +1

    Благодарность!

  • @Antonio-fm1sq
    @Antonio-fm1sq 3 года назад +1

    Спасибо!

  • @jorgenUA
    @jorgenUA 4 года назад +1

    в b-yield.js не нужна конструкция if (value > end) return;. Нужно просто поменять местами value += delta; и yield value; Ну, бывает..

  • @МаксимКоковин-и9к
    @МаксимКоковин-и9к 4 года назад

    Методы .throw и .return устанавливают генератору done:true. Возможно, их основная задача - управлять генератором снаружи.

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад

      Это сомнительная идея, примерно, как управление промисом снаружи.

    • @leilaoskanova7557
      @leilaoskanova7557 2 года назад

      Был случай недавно
      Выбирает человек фильтр на фронте и мне по значению из фильтра нужно из плоской структуры собрать несколько древовидных
      Итерации были асинхронными, чтобы не блокировать поток, но суть не в этом, а в том, что построение деревьев до 5 сек могло занимать
      Если в течении этих 5 сек человек выберет другой фильтр, мне нужно тут же прекратить итерирование по массиву и начать итерироваться заново уже с новым значением
      Как это можно сделать без функции return?
      По моему в данном случае прерывать итерацию не сомнительная идея
      Спасибо

  • @k2maniacco
    @k2maniacco 4 года назад +4

    У Вас перепутаны ссылки под видео. На генераторах стоит ссылка на асинхронные генераторы, а на асинхронных генераторах стоит ссылка на генераторы

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад

      Спасибо! Исправил

    • @k2maniacco
      @k2maniacco 4 года назад +2

      @@TimurShemsedinov Пожалуйста. Вам спасибо за Вашу работу!

  • @drmonochromer
    @drmonochromer 3 года назад +1

    Спасибо! Хотелось бы послушать про реализацию каналов на генераторах, про которую рассказывал Кайл Симпсон в книге You don't now js

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

      Ссылку или пример кода можно?

    • @oleg_shulga
      @oleg_shulga 2 года назад

      Вы так и не ответили

    • @chikenmacnugget
      @chikenmacnugget 2 года назад +1

      @@oleg_shulga пример он так тож и не получил

  • @igorsavelev9013
    @igorsavelev9013 2 года назад +1

    Тимур, а как то используете на практике генераторы?

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад +1

      Это универсальный интерфейс асинхронного итерирования, можно для итерирования по записям в базе данных или других хранилищах, для потоков с заранее неизвестным размером, множество применений...

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад +1

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

    • @igorsavelev9013
      @igorsavelev9013 2 года назад +1

      @@TimurShemsedinov сам видел применение в двух библиотеках: redux-saga и react-virtualize-tree, поэтому и хотелось бы увидеть примеры ещё какие то

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад +2

      @@igorsavelev9013 в других лекциях есть

  • @indigosay
    @indigosay 5 лет назад

    Для тех, у кого возникли проблемы в понимании на 44:30 jsfiddle.net/xreider/3wjhd7xa/

  • @ИванПетров-б8в6щ
    @ИванПетров-б8в6щ 3 года назад

    ничего не понял .. что такое a * this.value ?

  • @KostiaBazrov
    @KostiaBazrov 5 лет назад +5

    максимально неудобно! Юзай DevTools

  • @externuz
    @externuz 2 года назад +2

    Не могу серьезно воспринимать профессионала, который читает "ретурн".

  • @Hey__Luna__912
    @Hey__Luna__912 2 года назад

    сложно слушать и концентрироваться...сбивчивая, нечеткая речь

  • @timashoff
    @timashoff Год назад +1

    Спасибо!