Дима
Ну на этом месте возникает сразу куча вопросов
Дима
От того, почему нужно именно последовательное итерирование вместо параллельного выполнения до того, почему при этом не подходит обычная нормальная функция с for of и await
👨🏼‍💻
Так удобно ж вызвать: iterator.next() ---> и дальше обрабатывать value, при этом выполнение остального кода не останавливается
Дима
Лол, оно нигде не останавливается
Дима
Генераторы в же НЕ ДЛЯ асинхронности
👨🏼‍💻
пока исполняется цикл остальной код не ждет?
Дима
Не смотря на то, что часто их так и используют, это костыль
👨🏼‍💻
Прикинь, да)
че-т моя консоль тебе не верит
Дима
Поменяй консаль
👨🏼‍💻
ну дык консоль.логи выводит как и пологается 1. до цикла 2. все итерации в цикле 3. тот что после цикла
👨🏼‍💻
абсолютно синхронно
Дима
(async() => { for (const url of keys) console.log( await axios.get( url ) ) })()
👨🏼‍💻
та не для этого же
Дима
Что не для этого?
Serhii
Сделай метод промисам .next = .then и будет почти пистон
Дима
Асинхронные циклы — это не для асинхронных неблокирующих запрсов?
👨🏼‍💻
ну например: let a = [1,2,3] for (let i = 0; i < a.length; i++) { a[i] = a[i] + 1 }
Serhii
Только синхронный.. но зато не блокирующий ы
👨🏼‍💻
как мы понимаем это просто цикл
Дима
Здорово
Дима
Скажу по секрету
👨🏼‍💻
а теперь тоже самое, но с помощью функции генератора
Дима
В генераторах будет так же
Дима
Сразу нет
Дима
Ты пишешь про асинхронность
👨🏼‍💻
в генераторе будет из next прилетать value
Дима
Здорово
👨🏼‍💻
так вот пока цикл не отработает, я дальше ничего не могу сделать
Дима
И приводишь в пример СИНХРОННЫЙ код
👨🏼‍💻
с генератором тоже будет синхронный?
👨🏼‍💻
или пока я буду дёргать каждый iterate.next() ---> будет выполняться остаток кода в файле?
Дима
Боже
Дима
Сделай просто for с await
Дима
и будет тебе асинхронное выполнение
👨🏼‍💻
Боже
хроани Королеву
👨🏼‍💻
Сделай просто for с await
так с эвэйт(промисами) понятно. хочу сделать именно с генераторами
Дима
Ещё раз напоминаю, что генераторы в жс не для асинхронности
👨🏼‍💻
это для изучения, а не как реализация
Дима
Асинхронность на генераторах — это уже прошлая эпоха вообще)
👨🏼‍💻
https://github.com/tc39/proposal-async-iteration
Serhii
Для изучения '''for(let promise of promises) await promise '''
👨🏼‍💻
Асинхронность на генераторах — это уже прошлая эпоха вообще)
тоесть ты предлагаешь для быстрого обхода массива юзать обычный цикл, если надо + промисы/асинки. Генераторы не юзать вообще для этого?
Дима
Нет
Дима
Точнее, кейс генераторов вообще в другом
Дима
Если ты делаешь кастомную итерируемую структуру, то там сам собой будет генератор
👨🏼‍💻
Не, у меня цель сделать мега-быстрый нормализатор данных в массиве, например массив объектов 1кк.
Дима
Достаточно обычного .map
👨🏼‍💻
и мне надо привести его к виду, где все объекты гарантированны имею/т правильную структуру и если не подходят - удалить
👨🏼‍💻
Достаточно обычного .map
мап на 1кк данных на клиентской машине?
👨🏼‍💻
это ж вечность будет, если он вообще не повесит его
Дима
мап на 1кк данных на клиентской машине?
Это не питон, тут всё нормально со скоростью ;)
👨🏼‍💻
Smooth Operator
Громкое заявление
👨🏼‍💻
Громкое заявление
это уже провернно-перепроверненно
👨🏼‍💻
иногда (ИНОГДА) быстрее оказывается while
👨🏼‍💻
но это случайность :)
Smooth Operator
For быстрее же
От имплементации не зависит?)
Дима
For быстрее же
В случае таких высокоуровневых замыслов с for он быстрее напишет тонну лапши
Дима
Ища проблемы совсем не там откуда они придут
Smooth Operator
Не одним v8 едины
👨🏼‍💻
В случае таких высокоуровневых замыслов с for он быстрее напишет тонну лапши
а если б эта тонна лапши еще и быстро обрабатывалась --- было в агонь!
Smooth Operator
Пока что)
Sergey
Не одним v8 едины
Другое хз. Ибо пишу под электрон, хром и ноду
👨🏼‍💻
Ну ок, какой кейс генератор (func*) выполняет лучше всего?
Дима
Которая будет медленнее. Я согласен
Сначала делаешь чтобы работало Потом делаешь чтобы быстро Потом делаешь чтобы правильно Попытка решать эти проблемы в другом порядке будет довольно предсказуемой
Дима
Кастомные итерируемые структуры
👨🏼‍💻
Кастомные итерируемые структуры
ну таких у меня есть :) но я там генераторы не юзаю
Дима
Нет, таких у тебя нет
Sergey
У меня скоро цитатник от монады соберётся
Дима
🙈
Дима
ну таких у меня есть :) но я там генераторы не юзаю
Эти две фразы друг другу противоречат
Дима
by design