Vladimir
async-to-generator
Vladimir
bluebird couroutine хз какое отношение к спеке имеет
Vladimir
вот и вся теория: https://tc39.github.io/ecmascript-asyncawait/
Nikita
никакого. Но оно делает ровно то, чего ты ожидаешь от async/await и возвращает свой промис, который и быстрее и богаче стандартных
Vladimir
и не соответствует спеке)
Vladimir
скользкая дорожка
Nikita
в чем не соответствует?
Vladimir
ну сами промисы не соответствуют - это факт
Nikita
чем конкретно?
Nikita
тесты Promise/A+ проходят?
Vladimir
сходу не воспроизведу, edge кейс связанный с чейнингом
Vladimir
блюберд может запускать колбэки в неправильном порядке в определенных кейсах
Anonymous
ок, спасибо. пытаюсь просто понять как babel и ему подобные компилируют подобные вещи в es5
Nikita
кароче, в ноде ваще никаких проблем от использования bluebird. Только плюсы.
Vladimir
если ты не планируешь переходить на нативный async await никогда, то можно что хочешь делать
Nikita
я бы посмотрел на кейсы. Вообще не знаю, где в спеке последовательное выполнение промисов может быть.
Vladimir
ну promise.then(fn1); promise.then(fn2)
Nikita
global.Promise = require('bluebird') и нативные async/await
Vladimir
fn1 -> fn2
Vladimir
я про async await
Vladimir
async await все равно будет нативный промис давать
Nikita
const promise = Promise.resolve(123);
promise.then(console.log.bind(console, 1));
promise.then(console.log.bind(console, 2));
Nikita
ты про такой код?
hamper 𓅝
Vladimir
ну да
Nikita
hamper 𓅝
Nikita
ну да
и спека говорит что сначала 1, а потом 2 должен выполниться?
Vladimir
думаю да)
Nikita
я запускал) BB впереди планеты всей)
Andrey
Vladimir
но это противоречи спеке
Evgeny
увы
Vladimir
мысль в том, что bluebird это просто либа, которая не ставит цель соответствовать спеке
Nikita
даже если это все так, я не понимаю в каких случаях это может быть проблемой) Ты от промисов не ждешь синхронного выполнения.
Anonymous
Vladimir
сколько таких мелочей - кто знает
Evgeny
и неудобны
Nikita
а в том же блюберде есть методы для последовательного резолвинга там, где это нужно
hamper 𓅝
медленнее, чем блюбирд
хм... я на нативных всегда писал с их появления... надо будет пощупать блюбердные
Vladimir
в общем с таким же успехом можно использовать и не промисы вообще
Evgeny
ну да, коллбеки например - технология проверенная временем
Nikita
// bluebird
User.fetchAll().map((user) => {
console.log(user);
});
// native
User.fetchAll().then((users) => {
return users.map((user) => {
console.log(user);
});
})
// bluebird
User.fetchAll().map((user) => {
console.log(user);
}, {
concurrency: 1
});
// native
// сосницкий
Nikita
вот пример)
hamper 𓅝
с колбеками код выглядит страшно когда надо штук 40 последовательно выполнить ))
Vladimir
с async await это не нужно
Vladimir
без async await можно взять либу с функциями, работающими с любыми соответствующими стандарту промисами
Nikita
async/await не избавляют тебя от необходимости выполнять несколько промисов асинхронно, а не последовательно
Nikita
то есть Promise.props, Promse.map, etc.
Vladimir
для этого есть Promise.all
Nikita
у меня нет слов))
Nikita
ты можешь поверх Promise.all написать Promise.props. Но для Promise.map прямо помучаться прийдется)
Nikita
Vladimir
да ладно, getPromise().then(arr => Promise.all(arr.map(fn)))
hamper 𓅝
Vladimir
для работы с коллекциями есть for of, forEach, etc
Nikita
Vladimir
ну для этого есть хэлпер
Nikita
мы тут, или в реакт чатике, поднимали этот вопрос. Нет lodash для промисов. Будет - поговорим
Nikita
для браузера прям очень неплохо было бы такой либы
Vladimir
вообще-то можно и самому написать код, если он нужен
hamper 𓅝
а я перестал lodash примерно год назад пользоваться, все что мне в нем было нужно уже нативно есть
hamper 𓅝
или можно написать коротким кусочком кода
Nikita
или взять блюберд?))
Vladimir
только он не соответствует стандарту. для меня это важно
Nikita
и потом тестами покрывать это все. А сроки - да кому они нужны?)
Vladimir
и vendor lock-in
Vladimir
так можно взять либу которая расширяет Array
hamper 𓅝
ну покрыть тестами код из 5 строчек не долго...
Nikita
эм, это абсурд немного)
Nikita
стек свой опишешь вкратце?
Vladimir
но чет никто не делает так
Vladimir
всмысле - стек?
Nikita
я тебе 25 venor-lockов перечислю