Начиная с 8 LTS async/await полностью поддерживается на платформе Node; начиная с Chrome 62 (октябрь 2017) в консоли можно использовать await вне тела асинхронной функции, т.е. top-level. На сегодня на этапе Stage 2 находится соответствующий proposal в tc39. В то же время существует огромное количество легаси-кода с коллбэками даже без промисов, со смесью того и другого, и всякие другие комбинации. Где-то даже остались следы генераторов. Т.е. в мире JavaScript сосуществуют как минимум 4 разные модели реализации (а)синхронности.
А что предпочитаете вы? Не откажите в любезности уделить минутку ответу. Спасибо!
Комментарии (12)
dagen
05.12.2018 11:35+1Почему о генераторах говорится как о чём-то древнем и ненужном? Использую и async/await и генераторы вместе, для разных задач
kahi4
05.12.2018 11:40Использую js observable (хорошо, хорошо, пока что использую rxjs), async/await/promise совсем иногда.
goss Автор
05.12.2018 11:46rxjs с Angular или отдельно?
kahi4
05.12.2018 11:54С реактом и редуксом. Redux-observable
Но это в производственной практике, дома по-обстоятельствам, но эти обстоятельства, почему-то, часто по своей природе включают в себя стримы. Ну или я начал все видеть как стримы, как завещал Роб Вормалд.
Но должен признаться, что пока некоторые конструкции получаются короткими и изящными, другие конструкции получаются огромными и неповоротливыми (считай, нечитаемыми). Но в тех же async/await/promise раздражает невозможность их отмены (cancelation), что приводит либо к обилию Promise.race, либо к более тщательной проверке что не осталось подвисшего замыкания и никакое модальное окно не выскачит вдруг неожиданно на совершенно другой странице.
SaturnTeam
05.12.2018 11:41За что голосовать если в основном используется rxjs?
goss Автор
05.12.2018 11:44мне кажется, скорее за промисы – по стилю и духу они по-моему ближе всего
jehy
05.12.2018 14:03async await позволяет писать очень милый псевдо-синхронный код. Но в случае сложных конструкций без bluebird никуда — иначе никак не сделаешь нормально map+concurrency, delay, timeout, reduce и так далее. К счастью, они очень мило интегрируются, чем мы и пользуемся.
Tankerxyz
Наряду с асинхроными итераторами:
goss Автор
Забыл их включить в список опций, спасибо!