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 Обобщение
@alexdr12795 жыл бұрын
елки палки... почему только сейчас я нашел этот канал?( Низкий поклон, Тимур!
@TimurShemsedinov5 жыл бұрын
Дополню, что стеденты подсказали полезный пример использования .throw в асинхронном генераторе - это перехват ошибки в самом генераторе через try - github.com/HowProgrammingWorks/AsyncGenerator/blob/master/JavaScript/d-throw.js
@RockyTheDog7562 жыл бұрын
Спасибо огромное за труд!
@anryzhov5 жыл бұрын
Благодарю!
@kirillpospolitaki8603 жыл бұрын
Благодарность!
@Antonio-fm1sq3 жыл бұрын
Спасибо!
@drmonochromer3 жыл бұрын
Спасибо! Хотелось бы послушать про реализацию каналов на генераторах, про которую рассказывал Кайл Симпсон в книге You don't now js
@TimurShemsedinov3 жыл бұрын
Ссылку или пример кода можно?
@oleg_shulga2 жыл бұрын
Вы так и не ответили
@chikenmacnugget2 жыл бұрын
@@oleg_shulga пример он так тож и не получил
@jorgenUA4 жыл бұрын
в b-yield.js не нужна конструкция if (value > end) return;. Нужно просто поменять местами value += delta; и yield value; Ну, бывает..
@МаксимКоковин-и9к4 жыл бұрын
Методы .throw и .return устанавливают генератору done:true. Возможно, их основная задача - управлять генератором снаружи.
@TimurShemsedinov4 жыл бұрын
Это сомнительная идея, примерно, как управление промисом снаружи.
@leilaoskanova75572 жыл бұрын
Был случай недавно Выбирает человек фильтр на фронте и мне по значению из фильтра нужно из плоской структуры собрать несколько древовидных Итерации были асинхронными, чтобы не блокировать поток, но суть не в этом, а в том, что построение деревьев до 5 сек могло занимать Если в течении этих 5 сек человек выберет другой фильтр, мне нужно тут же прекратить итерирование по массиву и начать итерироваться заново уже с новым значением Как это можно сделать без функции return? По моему в данном случае прерывать итерацию не сомнительная идея Спасибо
@k2maniacco5 жыл бұрын
У Вас перепутаны ссылки под видео. На генераторах стоит ссылка на асинхронные генераторы, а на асинхронных генераторах стоит ссылка на генераторы
@TimurShemsedinov5 жыл бұрын
Спасибо! Исправил
@k2maniacco5 жыл бұрын
@@TimurShemsedinov Пожалуйста. Вам спасибо за Вашу работу!
@igorsavelev90132 жыл бұрын
Тимур, а как то используете на практике генераторы?
@TimurShemsedinov2 жыл бұрын
Это универсальный интерфейс асинхронного итерирования, можно для итерирования по записям в базе данных или других хранилищах, для потоков с заранее неизвестным размером, множество применений...
@TimurShemsedinov2 жыл бұрын
Пока не было async/await синтаксиса, то вообще асинхронность через этот контракт делали, сейчас это уже отошло в прошлое, но все равно много применений по прямому назначению, для итерирования
@igorsavelev90132 жыл бұрын
@@TimurShemsedinov сам видел применение в двух библиотеках: redux-saga и react-virtualize-tree, поэтому и хотелось бы увидеть примеры ещё какие то
@TimurShemsedinov2 жыл бұрын
@@igorsavelev9013 в других лекциях есть
@ИванПетров-б8в6щ3 жыл бұрын
ничего не понял .. что такое a * this.value ?
@ИванПетров-б8в6щ3 жыл бұрын
а .. это знак умножить ))
@indigosay5 жыл бұрын
Для тех, у кого возникли проблемы в понимании на 44:30 jsfiddle.net/xreider/3wjhd7xa/
@externuz2 жыл бұрын
Не могу серьезно воспринимать профессионала, который читает "ретурн".
@KostiaBazrov5 жыл бұрын
максимально неудобно! Юзай DevTools
@Hey__Luna__9122 жыл бұрын
сложно слушать и концентрироваться...сбивчивая, нечеткая речь