Rinat
по бенчам они якобы перформтя лучше и расширяют возвможности несоклько
Rinat
стал юзать сам блюберд
Igor
бенчи 😂🙈
Дима
Промисов может быть ппц как много
Дима
Но юзаю я его не из-за скорости
Igor
про бенчи был отличный доклад на HolyJS
Дима
bluebird здоровый, но при этом экономит как моё время, так и повышает читабельность кода
Rinat
Anonymous
Это цепочка абсолютно синхронных колбэков. Промисами и async/await я пользоваться умею. Суть в том, что у меня есть произвольное число обработчиков, каждый из которых передаёт результат следующему.
Rinat
мотивам*
Leo
можно вебпаком убирать ненужные функции из блюберда
Дима
Просто сравните два решения выше и решите, какое из них проще поддерживать)
Дима
Андрей
Хорошо, что промисы отлично полифилятся. Если они окажутся слабым местом, то можно заполифилить блюбёрдом.
Gordey
синхронный колбек хелл
Leo
а так в блюберде куча полезностей, таких как cancel, timeout, delay, finally, promisify, map, try, method
Leo
эти часто юзаю
Nikolay
props еще
Anonymous
Ок, просто массив синхронных функций.
Leo
да, он тоже
Дима
Да вообще много всего, когда напишешь все обертки к каждому полезному методу, там размер bluebird и получится
Rinat
Dmitriy
reduce
Dmitriy
Ок, просто массив синхронных функций.
Nikolay
Brs
еще catch ошибок определенного типа тоже норм
Андрей
хм. а есть нормальные примерчики трюков с блюбёрдом по руцке ?
Anonymous
[ ... ].reduce(
(body, iteration) => iteration(body),
reportBody
);
Sergey
Nikolay
Ну в общем случае редьюс, да
Андрей
в лодаше есть ещё chain но это не про этот кейс )
Anonymous
Nikolay
Колбеки вообще вредно синхронными делать.
Дима
Вот. Да.
https://github.com/zerobias/ensue
😏
Дима
Это обёртка над ramda, но именно для такого кейса — чтобы сделать массив функций и просто кинуть их все сразу
Дима
Рамду выпилю как руки дойдут до перф. тестов
Nikolay
Вроде в рамде чета штатное было для подобных кейсов, не?
Дима
Да, pipe
Nikolay
Не, именно для массива фций любой длины.
Дима
Не, sequence там представлен pipe, pipeK, pipeP и такими же compose
Anonymous
Я так полагаю, мне нужно почитать про потоки? =)
Дима
Везде нужно передавать каждую функцию в отдельном аргументе
Дима
Что жутко бесило)
Дима
Для массива функций там есть методы, описываемые общей фразой "примени этот список функций разом к"
Nikolay
Блеа, я точно как-то делал, не используя императивный код, но щас уже и не вспомню.
Anonymous
Ну, короче, я пока обойдусь reduce()
Dinis
/stat@combot
Anonymous
Главное — получается предсказуемо и, в итоге, тестируемо.
Дима
Я зря чтоль тесты писал 😢
Nikolay
R.tap(console.log) наше все :))
Дима
Эт да))
Anonymous
Эта... А слишком много абстракций — это плохо?
Nikolay
Слишком много чего угодно это плохо.
Дима
Отвечает господин Ассемблер
Дима
Плохая абстракция хуже чем никакой абстракции, но хорошая абстракция упрощает код и значительно экономит время и силы
Anonymous
Суть в том, что мы используем одну абстракцию над запросами в эластик. Но над ней пришлось внедрить ещё два уровня абстракции. Получается очень круто и удобно снаружи, но мозги заворачиваются сделать обратный анализ.
Андрей
Anonymous
Первая абстракция — криэйторы фильтров и агрегаций (очень похоже на экшн-криэйторы в Redux), а вторая — чейнинг применения условий.
Дима
Ну тут норм вообще, так и надо
Anonymous
Есть опасения, что тем, кто придёт в проект, будет печалька.
Дима
fn3(fn2(fn1(data))) vs [ fn1, fn2, fn3 ]
Anonymous
Там чейнинг не везде очевидный. Есть, например, чейнинг создания функций, которому на вход нужно посылать инвертированный массив.
Anonymous
Anonymous
Я пока придумал это, голову сломал.
Дима
Vlad
можно руками написать для ноуд апи
const pify = fn => (...args) => new Promise((resolve, reject) => {
fn(...args, (err, res) => {
(err) ? reject(err) : resolve(res);
})
});
Sergey
жаль в api самой ноды не добавят поддержку промисов
Anonymous
Дима
Большая
Sergey
Дима
Вместо колбеков можно просто писать await readFile
Sergey
ну или хотя бы readFile(‘name.sss’).then()
Vlad
плюс новичкам проще будет с async/await + promise-based api, чем с коллбеками
Sergey
Sergey
и скорее всего если сделать ПР то отвергнут
Safort
Так они всё ещё не определились добавлять или нет обещания в API?