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