@frp_ru

Страница 31 из 420
andretshurotshka?❄️кде
01.02.2017
03:46:29
?

aodzaki.toko
01.02.2017
03:58:10
?

Filipp
01.02.2017
10:13:26
F?R?P

andretshurotshka?❄️кде
01.02.2017
10:14:06
лол)

Google
Aleh
01.02.2017
10:14:14
F?R?P
тогда просто P подходит ж

Filipp
01.02.2017
10:14:43
А, надо минимум одно

Vasiliy
01.02.2017
16:05:32
что думаете за такой подход? https://github.com/istarkov/redux-observable-process-fetch по-моему интересно он сделал на эпиках там правда redux-observable старый

вот бы его кто-нибудь позвал в чатик этот, но мб он не сидит в чатиках

Ivan
01.02.2017
16:28:19
тут я

вобщем redux-observable оч рекомендую - пользуем активно в продакшене теже саги только я как то не любитель yield, весь код redux-observable несколько линий - поэтому понятен удобен

кстати пользую древнюю версию досихпор - в новых нет ничего что мне лично надо

Vasiliy
01.02.2017
16:44:47
привет! a ты используешь redux-observable-process-fetch? я хотел спросить про pre/post actions, они всегда имеют тип LOADING_START, LOADING_END, LOADING_CANCEL и в редьюсерах, чтобы, например, isLoading поменять в кусочке стейта нужно как-то дополнительно проверять "что именно" LOADING_START / LOADING_END не уверен, что я понятно сформулировал вопрос)

и вот этот момент с задержкой тоже .mergeMap(({ action }) => Observable.of({}) .delay(0) // to allow not run first fetch if same actions run simultaneously

Ivan
01.02.2017
16:46:54
по факту LOADING_START END используется только для индикатора что идет загрузка больше как оказалось нам ни для чего ненадо, поэтому там висит процесс который из вот этой кучи событий генерит два примерно такой export default () => (actions$) => ( actions$ // react only on specific actions .filter( ({ type }) => type === LOADING_START || type === LOADING_END || type === LOADING_CANCEL ) .scan( ({ count }, { type }) => type === LOADING_START ? { type, count: count + 1 } : { type, count: count - 1 }, { count: 0 } ) .filter(({ type, count }) => (type === LOADING_START && count === 1) || (type === LOADING_END && count === 0) ) .map(({ type }) => type === LOADING_START ? { type: LOADING_START_SYS, payload: { time: performance.now() } } : { type: LOADING_END_SYS, payload: { time: performance.now() } } ) // .do(v => console.log(v)) );

грубо считает есть ли активные загрузки

если нет генерит LOADING_END_SYS если начались LOADING_START_SYS

Google
Ivan
01.02.2017
16:48:48
Observable.of({}) .delay(0) // to allow not run first fetch if same actions run simultaneously грубо у нас апи декларативное - компоненты говорят что им надо, нередкость когда несколько компонент хотят одно и тоже - если начать акшены обрабатывать сразу на диспатче то их не объединить в одну

если придержать - буфер по времени - то к моменту конца мы там уже в курсе что есть несколько одинаковых запросов

нет смысла все выполнять - можно только один

там если я тесты выкладывал должно в тесте это быть описано

Vasiliy
01.02.2017
16:50:01
ооо, спасибо да, читаю тесты сейчас

Ivan
01.02.2017
16:50:17
там оч старая версия - щас поднаворотили но уже с учетом локальной фигни

хотя может и нет не помню точно

могу если надо скинуть лично что сейчас

Vasiliy
01.02.2017
16:51:37
даа, мне это сейчас очень нужно,

Yumi
01.02.2017
16:54:21
Заранее извиняюсь за нубский вопрос. Как в рамде можно остановить интерацию forEach? У меня есть определенное условие, перебрать массив по x-элемент и дальше нужно остановиться.

Или так вообще никто не делает и это тупизм?

Владимир
01.02.2017
16:57:56
Одну итерацию и продолжить дальше ?

Сергей
01.02.2017
16:58:24
Но не всегда подойдет такой кейс

Дмитрий
01.02.2017
16:59:42
Только нужно подкорректировать алгоритма с forEach на reduce

Тогда у тебя будет механизм прерывания через reduced

Дмитрий
01.02.2017
17:03:09
Я не выспался

Владимир
01.02.2017
17:03:33
это точно

Google
Владимир
01.02.2017
17:03:40
каким образом ты прервешь редьюс

Дмитрий
01.02.2017
17:03:41
Дальше первого вопросительного знака не читал ?

каким образом ты прервешь редьюс
Нет, в этом плане моё состояние на ответ не влияет ?

Возвращаешь из итерации функцию R.reduced с любым аргументом и редюс остановится

Yumi
01.02.2017
17:06:16
Аригато, сейчас попробую.

Дмитрий
01.02.2017
17:06:51
Тебе всё же наверное takeWhile / until или что-то в этом духе)

andretshurotshka?❄️кде
01.02.2017
18:53:16
?

Сергей
01.02.2017
19:16:29
/stat@combot

Combot
01.02.2017
19:16:29
combot.org/chat/-1001071213089

Сергей
02.02.2017
13:41:27
Как с помощью ramda массив ['a', 'b', 'c'] превратить в объект вида {a:'a', b:'b', c:'c'} Буду благодарен за помощь

Mikhail
02.02.2017
13:47:12
zipObj?

типа let arr = ['a', 'b', 'c']; R.zipObj(arr, arr)

Сергей
02.02.2017
13:51:24
спасибо)

Vasiliy
03.02.2017
01:31:20
напрягает промисы в обсерваблы постоянно конвертить с другой стороны не хочется все прям совсем на обсерваблах строить, наверное мб не везде прикольно торчать обсерваблами наружу не знаю можно ли определить какие-то общие формальные правила но мб я гоню просто и реально надо делать все обсерваблами раз уж все сайдэффекты в эпиках, то врядли где-то еще кому-то понадобится промисное апи раз уж rx, то мб лучше забить, например, на фетч и делать чисто на Rx.Observable.ajax: https://github.com/ReactiveX/rxjs/blob/master/src/observable/dom/AjaxObservable.ts#L40

Nikita
03.02.2017
06:53:52
Observable весьма хороши, когда их нет даже как то неудобно

Nikita
03.02.2017
08:08:17
+

Делал года четыре назад проект (на BaconJS). FRP просто манна небесная. Промисы тогда не использовал. Оборачивал XMLHttpRequest'ы. И их можно было отменять в отличии от!

Google
Vasiliy
03.02.2017
18:41:11
хм const normalize = (arr) => R.scan(transform, R.head(arr), R.tail(arr)) а как это point-free записать?

R.X([R.head, R.tail], R.scan(transform)), что это может быть за X?

Дмитрий
03.02.2017
18:44:30
Не, там не так

Но я вечно забываю, как называется нужный метод))

Ща пытаюсь найти)

Vasiliy
03.02.2017
18:44:51
оо, я ждал пока ты придешь)

converge мб?

дааа

const normalize = R.converge(R.scan(transform), [R.head, R.tail]) ну вроде норм выглядит

Дмитрий
03.02.2017
18:46:44
Ну или так, да)

Vasiliy
03.02.2017
18:47:00
сойдет)

Дмитрий
03.02.2017
18:49:03
pipe( splitAt(1), scan(transform) )

Vasiliy
03.02.2017
18:50:30
мм, чего-то не хватает

Дмитрий
03.02.2017
18:51:17
А, да, точно)

Vasiliy
03.02.2017
20:05:30
были ли у вас проблемы из-за того что вы притащили в проект рамду или rxjs / most / whatever, а потом никто не мог понять что вы на***вертили на этих либах? (:

Дмитрий
03.02.2017
20:06:02
Регулярно ?

Ну я просто стараюсь всякую порнуху оставлять для сайд проектов, а в рабочих — ограничивать полёт фантазии

Vasiliy
03.02.2017
20:09:40
мне надо как-то научиться понимать где эта грань: когда еще норм, а когда уже перебор

Дмитрий
03.02.2017
20:11:06
Достаточно пары попыток разобраться в коде месячной давности))

https://github.com/zerobias/unbend Я вот здесь уже далеко не все понимаю

Google
Дмитрий
03.02.2017
20:12:16
Точнее понимаю главное — вот так типа на работе стараться не писать ?

Darwin
03.02.2017
20:13:04
было бы время еще на эти побочные проекты

Vasiliy
03.02.2017
20:13:14
просто любая вещь, которую постоянно не юзаешь забывается и становится не оч понятной через какое-то время т.е. тупеешь прямо говоря со временем

Дмитрий
03.02.2017
20:13:15
Мне в этом плане проще, потому что рамда с rx и прочим на проекте уже были))

Vasiliy
03.02.2017
20:14:09
мм, и как? у меня щас такой стек, чем все закончилось?) мне просто надоело велосипедить, а рамда мощная, но она засасывает, т.е. она opinionated прям очень и начинаешь все делать на рамда, думать как рамда, если rxjs или что-то еще то начинаешь думать потоками и потом свой код показываешь кому-то и ниче не понятно

Дмитрий
03.02.2017
20:17:18
Ну нормально, я уже контролирую функциональность своего кода ? Поэтому наоборот в основном поупрощал всякие выражения без учёта тонкостей рамды

Типа там кто нибудь объекты редактировал через fromPairs вместе map и т.д.)

Ну и в связке с рекомпозом прям удачно работает

Страница 31 из 420