Press "Enter" to skip to content

Generators in JavaScript — What, Why and How — FunFunFunction #34


пойдите в понедельник утром, я mpj, и вы
смотрят забавную забавную функцию немного
образ жизни для вас довольно долгое время
люди попросили меня сделать видео на
генераторы генераторов — новая функция
в сценарии ACMA 6 о да дальше или да
гармонии или да, например, JavaScript 2015 или
все , что это новая функция , какие
генераторы, многие из которых ссылаются на
как возможные функции, которые
это объяснение, которое мне нравится, но я
подумайте, что в конце концов генераторы
из тех вещей, которые вам просто нужно
см., чтобы понять их, поэтому давайте
войти в него, когда вы используете
генераторы, которые вы часто используете
обещает также вам не нужно, но
если вы не понимаете обещаний
и поймите, как это
видео просто заставит ваш мозг расплавиться
поэтому вам нужно сделать это, прежде всего, у меня есть
видео о обещаниях там, что вы
можно проверить, так что в этом примере мы
собираюсь работать с некоторым синхронным кодом
мы просто что-нибудь принесу из
это служба упаковки, на самом деле это
крутой сервис, просто делая эти случайные
остальное холодное испытание, и это JSON
код-код-заполнителя — спокойный и когда
вы скручиваетесь, вы получаете это случайное испытание
данных, это очень полезно для
поэтому у меня есть этот тестовый файл console.log ah
привет, и я просто запускаю это и говорю, что
вообще интересно да привет я иду
чтобы показать вам пример с обещаниями
сначала и сделать это, мы будем использовать
API-интерфейс Fetch для этого, потому что
это обещание, поэтому я просто собираюсь
сделай потом, и да, мы собираемся
проконсультируйтесь с журналом, что я посмотрю, что
происходит
выборка — не самое интересное да
потому что в веб-браузере вы современны
веб-браузеры будут иметь выборку
в, но мы запускаем узел, чтобы мы не
так что я буду требовать, чтобы
в узле идет выборка, не требуется выборка I
думаю, и pm установить выборку узла, и мы
запустите снова, мы получим большой JSON
BLOb да ладно , мы получаем объект тела к
объект ответа или что-то в этом роде
для того , чтобы получить тело JSON от идти получить
тело от этого, как Джейсон, мы идем
ответить ответ
JD песня привет запустить его снова очень хорошо прямо сейчас
у нас есть объект JSON здесь с заголовком
Думаю, мы собираемся это выпустить
композиты после этого принимают сообщение новое сообщение
дот название , и мы будем идти
нет генераторов, и мы получаем только
название здесь поясняет, что я просто сделаю
заглавием как титул там, так и запустите
это снова, и теперь он говорит название здесь так
это имеет дело с синхронно
silouan, как только с помощью обещаний и
это это очень стандартная вещь мы просто
прохождения вашего Я слышу это извлечение его
и как только он будет доставлен, он пройдет
в эту школу
ответ и ответ есть
метод под названием JSON, который будет анализировать
как Джейсон, а затем, когда это будет сделано
что он передаст это
следующий обратный вызов относительно следующего затем и
мы извлекаем название оттуда
и это название записывается в консоль
на консоль, и это то, что
мы не видим здесь ничего странного
что, но мы собираемся бросить
генераторы в микс теперь требуют
библиотеки генераторов Co now Co
считать своим аргументом генератор
функции, и это выглядит так :
эта маленькая звезда здесь, и это означает
это функциональный генератор будет
комментарий выходит из этого обещания
пример здесь и начать копирование вещей
из этого я собираюсь скопировать эту строку здесь
BAM это будет немного длиннее, поэтому
мы собираемся разбить на это в случае
ваш я оке Оке, и теперь, что я собираюсь
делаю, что я собираюсь сделать этот ответ
равный URI выборки, так что это будет, если я
просто если это было просто выполнено прямо
это приведет к возвращению
обещаю, но если я сделаю это ах и давай сделаем
это
console.log, и я собираюсь
выполнить и показать вам, что так смотреть на
это возвращается, это не
обещайте, что это реальный ответ
объекта, позвольте мне еще раз продемонстрировать, что
Я собираюсь на пост Const
Хан оценивает быстро Const Jesus yield ah
ответная точка JSON выполнить это снова
то , о да это все-таки ответ
потому что я повторяю ответ, который я хочу
на эхо- пост, как будто я хочу, чтобы это
снова запустите, и мы видим, что Wow это нет
перекликается с сообщением, поэтому я просто собираюсь
сделай так же, как и кода Боб, я
собираюсь только название сделать, чтобы сделать сообщение не
Я — и мы собираемся отозвать титул только для
сделай это точно так же, я собираюсь сделать
это
мы честны, мы запускаем его снова и как вы
видеть , что мы теперь имеем такое же поведение , это
эхом оттуда оттуда
сообщения в примере о, так что я
показывая вам здесь в этот момент
в основном просто темная магия, это некоторые новые
звезда синтаксис в качестве своего нового синтаксиса и доходности
это новая угольная библиотека, так что давайте ходить
этот код через спокойного упорядоченного
Кстати, нет ничего странного в нашей
строка 12, но вот наша первая тайна
ключевое слово, которое мы признаем, приносит вам в глаза
здесь из последнего примера здесь
но уступить это странно, что
это делает так, что функция генератора
здесь будет, когда он достигнет урожайности
Ключевое слово в том , что он собирается взять
обещанный возврат из выборки и это
я пойду, эй, я не знаю, что это
вещь я буду просто иметь дело это
вы — со-директор и позволяете вам справляться с этим
потому что я не знаю, и я не собираюсь
делать
ничего больше я не собираюсь держать
выполняя, пока вы не дадите мне что-нибудь
с которыми я могу работать, и совместную работу
это будет похоже на то, что ты
функция генератора ты ленивый зад
с этим обещанием для вас, и это
собираюсь пообещать, что это будет
разрешите это, и тогда это пройдет
что каково бы ни было значение результата
обратно в функцию генератора и
это то , что будет вырубился
вот что будет назначен на
ответа, и это будет
повторяется здесь на следующей строке, поэтому
отзывчивый JSON, который также собирается
вернуть обещание, которое человек- генератор
хорошо, как только он достигнет урожая здесь
это собирается пойти, что это другое
обещаю, я не знаю, что делать с
что я собираюсь уступить его вам, CEO
что вы можете иметь дело с ним и генеральным директором
это решает обещание, а затем оно
передает его обратно в генератор, который
назначит его здесь, а остальную часть
код здесь это ничего странного и
это ничего странного, так что это
заставляет чувствовать себя немного менее волшебным
но мы только смотрим, как генераторы
работа изнутри генератора мы
не знаю, как генеральный директор делает это, поэтому мы
собирается реализовать нашу собственную версию
Генеральный директор Я собираюсь прокомментировать это, и я
заменив это тем, что мы
собираемся назвать это, мы собираемся называть его
ремиссия
Недавно мне дали этот фирменный USB-порт
власти, и я думал, что Адам кажется
как будто он не производится полностью
англоговорящая страна, поэтому я решил
что я сделаю драматическое чтение для
вы находите людей со спины
Совместимый USB-выход Powerbank
энергосберегающий фанк-конг и
Чувствительность и экономичность Vuitton
эффективность имеют емкость батареи LED
индикатор моды и красивый без потерь
в режиме ожидания более продолжительное время
эффективность преобразования
преобразование мощности достигает 90
выше, чем намного больше, чем
аналогичные продукты имеют интеллектуальные
функция покоя, когда оборудование
используется автоматически будет регулировать ток
выход действительно играет роль plug and play для
смарт-iPhone HTC черный семьи, которые прочь я
ставка, я собираюсь прокомментировать это, и я
собирается заменить это с тем, что мы находимся
будем называть это, мы назовем это магией
ну нет, не потому, что это не
особая магия, которую люди называют
бежать эм давайте называть их да бежать давайте
давайте пойдем с тем, что мы объявляем
мы знаем, что run запускает этот
правильно это требуется генератор и
мы собираемся сказать, что мы это
запуск генератора, чтобы мы просто
собираюсь вы знаете запустить генератор
генератор, и мы увидим
что это дает нам, вы знаете um
console.log запустите его ah gee благодаря узлу
отладчик , который был супер полезно все в порядке
ах это не очень объясняет
Я знаю, что это дает нам
итератор и итератор собирается
есть следующий метод, давайте консоль этого
вместо этого результат видит то, что дает
нас все в порядке, это намного больше
объяснительный дает нам объект здесь, мы
и объект имеет значение протокола
который является обещанием , что это должно быть
ожидается снова генератор имеет
как я не знаю, как бороться с
обещает, что вы справляетесь с этим
поэтому он дал нам обещание здесь
и он также имеет свойство, которое
сделанное равно false, мы поговорим об этом
в немного позже, а пока кружевном
генератор попросил нас справиться с этим
обещаем, и это то, что мы собираемся сделать
давайте возьмем обетование здесь
для вызова этого объекта это raishin I
подумайте, что этот объект — это то, что мы
вызывали итерацию, и
итерация обещает, поскольку ее ценность в
этот случай продолжительности значения называет это
обещаю вам, и мы собираемся или
решить это, как вы решаете обещания
то правильно, чтобы обещание разрешило
к значению, называемому им X, и мы
хотите обеспечить кружевной генератор
это значение как-то, и мы это делаем
снова перейдя в итератор
мы будем называть iterator dot next и
мы собираемся передать значение, которое получило
нас ничего действительно не думаю, что это остро
это, но винт, который на данный момент
мы не добираемся так далеко
Я думаю, нам нужно сделать консольный журнал точек
здесь , чтобы увидеть , что происходит реакция
это ответ, и мы запускаем этот правый БАМ так
мы признаем, что это ответ
объект, так что он работал так далеко
медленно пройти через то, что происходит
далеко, поэтому мы передаем этот генератор
здесь в run run будет здесь в строке 21
вызывающий генератор, который даст ему
итератора до сих пор ничто в Джене
генератор еще не выполняется
однако здесь, в строке 22, напоминающей точку
следующий на итераторе , который на самом деле
начать выполнение
генератор, чтобы он выполнял строку
12, а затем он начнется
исполнив линию 13 здесь, и она собирается
позвонить выборки и выборки собирается вернуться
обещание, которое генератор собирается
вытащить его, он сделает паузу
Я просто скажу, что эй запустил тебя
должны иметь дело с этим обещанием
потому что я не знаю , как бороться с ним
и это то, что мы собираемся спуститься
здесь, потому что следующее значение вернется
итерация, и эта итерация будет
имеют ценность, и это может быть нашим
потому что это то, что
генератора, то получим:
используйте затем для решения обещания
так же, как вы разрешаете любое обещание и
когда мы проходим его в итератора
используя следующий проход значение здесь и что
затем уступят и назначат
ответ, насколько мы правы
теперь что происходит дальше, так это то, что
генератора, так как теперь мы получили
хорошо реагировать
два новых исполнения и выйдет из системы
ответ здесь, и это то, что мы видим
здесь и тогда это будет
продолжая призывать этот ответ к
JSON, и это приведет к тому, что до
бег, и это будет уступлено
здесь, поэтому мы собираемся получить еще один
обещаю, я собираюсь назвать это другим
обещаю сейчас просто доказать это
к вам Я собираюсь console.log другой
обещаем другое обещание, которое мы собираемся
беги, что да, это не совсем верно
что это еще одно обещание, потому что это
и объект, содержащий обещание
здесь как значение свойства, так что это
не действует другое обещание итерации следующего
разве это не другое, если ставка
дверь прямо сейчас мы будем называть это
другая область другой итератор Я собираюсь
сделать снова, теперь он делает немного больше
смысл
так что итератор здесь возвращается
другой итератор и значение
это обещание, что мы
хочу, давайте сделаем это, давайте сделаем это
другое обещание
и другой итератор равен ценности, которая
наше обещание звучит так,
имеют обещание, и это обещание
хорошо, я собираюсь удалить эту строку и
мы будем решать это обещание как
хорошо, я собираюсь назвать это, почему бы
урод, мы очистим это позже
и мы снова да, как мы это делали выше
передадим это итератору, используя
следующий посмотрим, действительно ли это нас достало
сообщение, поэтому я собираюсь удалить это
ответ здесь, и вот тогда я
перейдите в console.log, этот пост
и мы запускаем это, давайте посмотрим, получилось ли
нам, что мы хотели, да, это было
так что теперь сообщение есть, и мы получаем ответ
из JSON и на самом деле все это
мы также получили название здесь, поэтому
Я могу фактически удалить это и на самом деле
теперь он делает именно то, что сделал генеральный директор
позвольте мне просто расколоть это назад и запустить
это снова, и вы увидите, что мы просто
исполнительный директор теперь, когда у нас есть
полное осуществление ручейки через
этот генеральный директор , потому что теперь у нас есть
собственная реализация ах пройдем
это строка за строкой, так что первое происходит
что мы называем бег здесь хорошо, и мы
перейдите в функцию генератора, поэтому запустите здесь
будет передан генератор и
первое, что он собирается сделать, — это
это не работает.
генератор , который произойдет, если генератор
была нормальной функцией, а не
собираемся вернуть итератор и
на самом деле получить итератор для запуска, чтобы получить
генератор для запуска, который мы вызываем
следующий по нему это только этот первый запуск мы
не передавайте никаких аргументов здесь, потому что
это это первый , который мы использовали получение
он собирается запустить эту линию
здесь он объявит об этом ваш i / o
здесь переменная, и это пройдет
для извлечения выборки будет разрешаться или
или вернуть обещание и что будет
перейдите в это ключевое слово yield и
генератор собирается сказать, как эй, я не
знай, какое это обещание я собираюсь пройти
это вам что-то сделать и дать мне
что-то назад, и это нас сбивает
здесь, так что это дает нам эту итерацию
объекта, и обещание будет
значение на итерационном объекте может
пообещайте, что обещание
используя
как и любое другое обещание, чтобы этот X здесь
первый запуск — это будет
ответ на правильный ответ, чтобы сделать это
немного больше педагогическое и мы будем
передать это в следующий итератор и
что возвращает нас к этой
вот так это не вдаваясь в
ответ здесь , и мы вниз здесь
вызов точки Jason на объект ответа
что даст нам еще одно
генератор снова выдается с
к функции запуска, и это то, что
происходит здесь он собирается получить
другой итератор, который мы извлекаем
в другое обещание, и мы делаем точные
то же самое здесь разрешить его в новый
так что это будет сообщение
и мы снова передаем его в итератор
как аргумент для следующего, и это приносит
мы возвращаемся сюда, выход будет пройден
вне этого сообщения тут же выполняем
название, а затем мы повторяем его, а затем
мы здесь, поэтому наша функция запуска работает
этот конкретный случай, потому что у нас есть только
выступить с заявлениями, но представьте себе
что у нас было 10 из них, тогда это
не будет работать, потому что мы просто получим
большая пирамида , где мы только тогда внутри
это и так, давайте сделаем рекурсивный
функции этого
у нас проблема, потому что
обещание сверху тогда не является функцией
потому что вы знаете обещание здесь, это не
и это не значит, что это на самом деле
строка, поэтому, если съешьте расиновую точку
мы просто возвращаем его, если это работает
да Шакир, как будто у нас это работает на
в результате завершился Валгалла, и это
здесь тоже карьера
результат синий синий синий синий синий
синий синий синий удивительный Давайте сделаем это
здесь вроде засуньте эту штуку здесь чистой
это немного ах отступ, это здесь до сих пор
мы говорили о том, что такое генераторы и
и теперь мы немного посмотрели, как использовать
но неясно, почему да
иногда, когда я объясняю
концепции программирования на шоу у меня есть
У меня есть ясная причина для этого. Я
супер в восторге от концепции, и я
может сказать вам, почему это не так
когда дело доходит до генераторов, поэтому, когда
приходит к программированию, есть много
все в порядке
даже официальные функции
реализованный в JavaScript, я имею в виду просто
потому что мы сделали это , это не значит
что это обязательно хорошая идея
генераторы, безусловно, очень круты и
они позволяют вам сделать это
синхронный код вроде как вы
написания синхронного кода, который похож на
это что-то о том, что есть
очень привлекательный, но, с другой стороны, я
чувствуй себя обещаниями, которые ты здесь знаешь
это, если вы посмотрите на это
реализация здесь не на самом деле
ракетостроение Я чувствую , что обещания
или хороши, как есть проблемы с
они, конечно, но мне не хочется
это похоже на большое массовое улучшение
у генераторов есть такие умные штаны, почему
я думаю, что они очень умны
и прохладное решение проблемы, но я
не искренне убежденный, что это на самом деле
упрощает, но опять-таки я не уверен
может быть, просто не было
реализация этого, что у меня есть
нашел убедительным или что просто
то , чего я не вижу там
может быть что-то в генераторах или
может быть, не так, как я бы
любите обсуждать это, что
что ты думаешь, или уйдешь
комментарий ниже или, возможно , голосование
чужой комментарий, который вы подумали
были проницательны по вопросу, который у вас есть
смотрел эпизод веселой веселой функции I
релиз аренды в понедельник утром ах О
800 GMT, если вам понравился этот эпизод
убедитесь, что вы просматриваете канал
ниже и посмотреть, есть ли еще
эпизоды, которые щекочут ваши фантазии
вы даже можете подумать о подписке или
возможно, следуй за мной в Twitter
Please follow and like us:

Be First to Comment

Добавить комментарий