Anton
Ну
Anton
Как сказать
Anton
Что на него нкак и не ответить)
Anton
Что значит с поддержкой es2016?
Anton
Любая либа из нпа будет так или иначе работать с языком, он же обратно совместим
Anton
Чем версия ноды новее, тем больше новых фич из коробки
Anton
Если хочется использоавть фичи, которых из коробки нет - тогда babel
Anton
Вариантов не так много)
Anton
Можно писать хоть на es3, хоть на 2033, это же зависит исключительно от версии ноды
Anton
А так есть модный Koa
Ilya
ну вот к примеру koa2 неплохо работает с генераторами и async/await
Anton
Как по мне, так страый добрый express из зе бест
Loyd
поиспользуй его с генераторами, угу
Anton
Но зачем?
Loyd
Незачем? Ну ок, используйте голые промисы дальше
Anton
Это не ответ.
Loyd
Вполне себе ответ. Если ты не видишь проблемы, то ты с ней не столкнулся
Anton
Так в чем их проблема-то?
Loyd
Если не считать синтаксического мусора, то хреново реализовывать любую нетривиальную (выходящую за цепочку последовательных вызовов и их параллельных (all/any) комбинаций) логику.
Evgeny
ой ладно вам. На промисах писать нетривиальную логику одно удовольствие
Anton
Например какая логика? Я не могу представить себе кейс, когда у генераторов может быть преимущество перед промисами для контроля потока выполнения. Генераторы, безусловно, нужны, но как они могут помочь в построении сложной логики обработки запроса я не понимаю, поэтому хотелось бы увидеть пример
Anton
Промисы, конечно, тоже не панацея
Anton
Если нужен какой-нибудь асинхронный map, то я обычно обращаюсь за помощью к async caolan'a
Vladimir
на async await гораздо проще делать очень много вещей
Vladimir
нет, это сахар для генераторов
Ale
+
Loyd
Генераторы это способ писать аля синхронный код. Попробуй написать на промисах долгий запрос, параллеьно с которым идут несколько запросов, каждый из которых может сфейлится и пока выполняется первый, их нужно повторить, если сфейлились оба, то запустить долгий запрос заново. Ну и т.д.
Я не говорю, что прям вот везде менять надо промисы на промисы+async-await, наборот —- в большинстве случаев не надо это делать просто ради того, чтобы делать. Но и пилить что-то с нуля на промисах, когда есть async-await я смысла не вижу
Ale
хз, я вообще сейчас .then не юзаю
Sash
Loyd
В том-то и дело, что не сделаешь это на потоках. А где сделаешь, там они и не нужны
Sash
что не сделаешь?
Loyd
хз, я вообще сейчас .then не юзаю
Вот кстати сам then (который по факту map, ибо промис тоже реализует функтор) имеет проблему: логика пишется как бы с двух сторон: и по присваиваниям (промисы) и по транформациям (действие, которое передаёшь в then)
Loyd
В отличие от
Vladimir
*flatMap
Loyd
Ну, "map" я применил скорее как fmap. А что за ним, map или flatMap это не суть
Anton
https://github.com/tc39/ecmascript-asyncawait
Vladimir
И?
Anton
Так же на всех async function можно будет вызывать Promise.all()
Vladimir
И?
Anton
И?
Что и? Я просто сказал, что async/await это сахар для промисов, а не для генераторов
Vladimir
Это не так) промисы как есть, так и остались
Anton
Да
Anton
А функции, которые помечены как async, будут отдавать промисоподобный объект
Anton
Помимо того, все промисы можно будет await'ить
Vladimir
1. Появились промисы
Vladimir
2. Появились генераторы
Vladimir
3. Генераторы стали использовать, чтобы запускать промисы
Vladimir
4. Для генераторов сделали сахар - async-await
Michael
Michael
Это на генераторах
Michael
Обычные продолжения
Michael
Функции, из которых можно выйти и снова войти
Michael
aka continuation
Michael
Генераторы с промисами позволили это реализовать
Andrey
И что случилось?)
Denis
А как так происходит?)
Denis
Новый вид атак?)
Denis
Сорри я не хотел 😈
Ilya
Есть же скрипт, который на панели активности в профиле Github позволяет делать рисунки разные
Ilya
Надписи
Anton
Господа, вы поселили во мне сомнения, а посему я отправился курить спеку, гитхаб tc39 и прочие ресурсы, в надежде познать истину. Теперь я спешу поделится с вами своим вновь приобретенным (или овеженным) знаением.
Async/await был впилен в спеку именно для того, что бы избавиться от генераторов при работе с промисами. Синаксис async function создает промис, а await - это точный аналог then. Regenerator от фейсбука, который сейчас используется для трансофрмации async синтаксиса, использует генереаторы лишь как необходимое зло, поскольку иначе подобный код никак не транспилировать на старые версии js.
Dima
Встречали что-нибудь для работы с изображениями для node? ( без imagemagic и не lwip)
Anton
Если вы хотите сказать, что я не прав и ошибаюсь, то пожалуйста, привидте пруфы, статьи, еще что-нибудь.
Loyd
Ну ты прям все в кучу накидал
Anton
Я хочу обратить внимание, что я затеваю эту дискусиию не холивара ради, а обагощения знаниями для
Vladimir
@antouhou все верно, но вывод некорректный
Loyd
регенератор потому и РЕ, что генераторы в КА переводит
Michael
Ну так и есть
Michael
А свитч – чтобы не городить кучу ифов
Michael
И так далее по списку
Loyd
=)
Vlad
Dima
спасибо, опробую
Michael
А чем imagemagick не устраивает, если не секрет?
Дима
Выглядит вроде нормально, хотя я ещё не пользовался
Anonymous
Что вы скажете по этому поводу? https://github.com/airbnb/javascript#iterators--nope
Anonymous
По-моему, это параноидальный подход, не?