@nodejs_ru

Страница 374 из 2748
Andrey
29.11.2016
13:35:52
Хорошо, что промисы отлично полифилятся. Если они окажутся слабым местом, то можно заполифилить блюбёрдом.

Gordey
29.11.2016
13:36:28
синхронный колбек хелл

Leonid
29.11.2016
13:36:37
а так в блюберде куча полезностей, таких как cancel, timeout, delay, finally, promisify, map, try, method

Google
Leonid
29.11.2016
13:36:46
эти часто юзаю

Nikolay
29.11.2016
13:36:57
props еще

Котяй Негодяй
29.11.2016
13:37:09
синхронных колбеков? Это как?
Ок, просто массив синхронных функций.

Leonid
29.11.2016
13:37:10
да, он тоже

Дмитрий
29.11.2016
13:37:26
Да вообще много всего, когда напишешь все обертки к каждому полезному методу, там размер bluebird и получится

Никита
29.11.2016
13:37:42
Dmitriy
29.11.2016
13:37:49
reduce

Ок, просто массив синхронных функций.

Nikolay
29.11.2016
13:37:49
Brs
29.11.2016
13:37:52
еще catch ошибок определенного типа тоже норм

Andrey
29.11.2016
13:37:52
хм. а есть нормальные примерчики трюков с блюбёрдом по руцке ?

Котяй Негодяй
29.11.2016
13:37:53
[ ... ].reduce( (body, iteration) => iteration(body), reportBody );

Google
Сергей
29.11.2016
13:38:04
pipe/compose в помощь
во это решение, да

Nikolay
29.11.2016
13:38:04
Ну в общем случае редьюс, да

Andrey
29.11.2016
13:38:46
в лодаше есть ещё chain но это не про этот кейс )

Дмитрий
29.11.2016
13:38:48
Ок, просто массив синхронных функций.
Если у тебя просто фактически fn3( fn2( fn1( data ) ) ) то это pipe, а не колбеки

Nikolay
29.11.2016
13:39:24
Колбеки вообще вредно синхронными делать.

Дмитрий
29.11.2016
13:39:35
Вот. Да.
https://github.com/zerobias/ensue ?

Это обёртка над ramda, но именно для такого кейса — чтобы сделать массив функций и просто кинуть их все сразу

Рамду выпилю как руки дойдут до перф. тестов

Nikolay
29.11.2016
13:41:30
Вроде в рамде чета штатное было для подобных кейсов, не?

Дмитрий
29.11.2016
13:41:45
Да, pipe

Nikolay
29.11.2016
13:42:11
Не, именно для массива фций любой длины.

Дмитрий
29.11.2016
13:43:08
Не, sequence там представлен pipe, pipeK, pipeP и такими же compose

Котяй Негодяй
29.11.2016
13:43:30
Я так полагаю, мне нужно почитать про потоки? =)

Дмитрий
29.11.2016
13:43:39
Везде нужно передавать каждую функцию в отдельном аргументе

Что жутко бесило)

Для массива функций там есть методы, описываемые общей фразой "примени этот список функций разом к"

Nikolay
29.11.2016
13:45:10
Блеа, я точно как-то делал, не используя императивный код, но щас уже и не вспомню.

Котяй Негодяй
29.11.2016
13:45:27
Ну, короче, я пока обойдусь reduce()

Динис
29.11.2016
13:46:56
/stat@combot

Google
Котяй Негодяй
29.11.2016
13:47:03
Главное — получается предсказуемо и, в итоге, тестируемо.

Дмитрий
29.11.2016
13:47:47
Я зря чтоль тесты писал ?

Nikolay
29.11.2016
13:47:51
R.tap(console.log) наше все :))

Дмитрий
29.11.2016
13:48:08
Эт да))

Котяй Негодяй
29.11.2016
13:48:19
Эта... А слишком много абстракций — это плохо?

Nikolay
29.11.2016
13:48:35
Слишком много чего угодно это плохо.

Дмитрий
29.11.2016
13:48:52
Отвечает господин Ассемблер

Плохая абстракция хуже чем никакой абстракции, но хорошая абстракция упрощает код и значительно экономит время и силы

Котяй Негодяй
29.11.2016
13:50:43
Суть в том, что мы используем одну абстракцию над запросами в эластик. Но над ней пришлось внедрить ещё два уровня абстракции. Получается очень круто и удобно снаружи, но мозги заворачиваются сделать обратный анализ.

Первая абстракция — криэйторы фильтров и агрегаций (очень похоже на экшн-криэйторы в Redux), а вторая — чейнинг применения условий.

Дмитрий
29.11.2016
13:52:12
Ну тут норм вообще, так и надо

Котяй Негодяй
29.11.2016
13:52:29
Есть опасения, что тем, кто придёт в проект, будет печалька.

Дмитрий
29.11.2016
13:52:56
fn3(fn2(fn1(data))) vs [ fn1, fn2, fn3 ]

Есть опасения, что тем, кто придёт в проект, будет печалька.
А нет опасений что проект рухнет потому что инвестор разорится раньше, чем фронт протестирует всю рамду и bluebird? ?

Котяй Негодяй
29.11.2016
13:53:56
Там чейнинг не везде очевидный. Есть, например, чейнинг создания функций, которому на вход нужно посылать инвертированный массив.

Я пока придумал это, голову сломал.

Vladimir
29.11.2016
13:56:20
Промисифай мы пока ещё не впилили же.
можно руками написать для ноуд апи const pify = fn => (...args) => new Promise((resolve, reject) => { fn(...args, (err, res) => { (err) ? reject(err) : resolve(res); }) });

Сергей
29.11.2016
13:58:29
жаль в api самой ноды не добавят поддержку промисов

Google
Котяй Негодяй
29.11.2016
14:06:59
жаль в api самой ноды не добавят поддержку промисов
Пардон, а какая разница, в каком они API?

Дмитрий
29.11.2016
14:07:05
Большая

Сергей
29.11.2016
14:07:16
Дмитрий
29.11.2016
14:07:23
Вместо колбеков можно просто писать await readFile

Сергей
29.11.2016
14:07:52
ну или хотя бы readFile(‘name.sss’).then()

Vladimir
29.11.2016
14:08:24
Пардон, а какая разница, в каком они API?
раз промисы first class citizen, то апи должно поддерживать этот интерфейс тоже

плюс новичкам проще будет с async/await + promise-based api, чем с коллбеками

Admin
ERROR: S client not available

Сергей
29.11.2016
14:09:30
и скорее всего если сделать ПР то отвергнут

Safort
29.11.2016
14:09:58
Так они всё ещё не определились добавлять или нет обещания в API?

Vladimir
29.11.2016
14:10:12
обещания, лол

Vitaliy
29.11.2016
14:10:19
не согласен (с тем, что поддержки промисов не будет в апи). вон, даже браузерные апи переезжают на промисы. взять тот же fetch()

Vladimir
29.11.2016
14:10:33
Сергей
29.11.2016
14:10:46
уже есть
не приняли же

Vladimir
29.11.2016
14:10:55
не приняли же
верно, но он есть

Сергей
29.11.2016
14:11:32
их добавить слишком сложно
вместо вываливания эксепшена о пропуске коллбека возвращать промис

да сломается немного апи

но в 8 версии могут сделать

Google
Safort
29.11.2016
14:12:09
их добавить слишком сложно
А в чём именно проблема? Они же могут ломать обратную совместимость. Ну, или можно под спец. флагом менять API на новое.

Vladimir
29.11.2016
14:13:01
ты читал тот пр?

Котяй Негодяй
29.11.2016
14:13:13
Vladimir
29.11.2016
14:13:44
пост-мортем дебаг одна из главных проблем

Сергей
29.11.2016
14:14:26
ты читал тот пр?
поделись ссылкой, пожалуйста

Safort
29.11.2016
14:14:49
вопрос и к тебе: ты читал тот пр?
Нет. Но сейчас пойду искать его.

Vladimir
29.11.2016
14:15:27
некоротые модули как сервер, стримы и сервер не поддерживают модель "без коллбека возвращать промис"

Нет. Но сейчас пойду искать его.
как найдёшь принеси в чат

ну и сегодня ты не успеешь его дочитать

там на пару часов

потом также нужно избежать перф нагрузки для коллбек потребителей

Никита
29.11.2016
14:16:34
Промисифай нужен для начала

Vladimir
29.11.2016
14:16:47
Никита
29.11.2016
14:17:02
Где?

Vladimir
29.11.2016
14:17:51
стримы ладно но причем тут сервер?
я же написал «не поддерживают модель "без коллбека возвращать промис"»

Сергей
29.11.2016
14:18:35
вообще не ответил на вопрос

ну ладно

Страница 374 из 2748