@frp_ru

Страница 19 из 420
Дмитрий
28.10.2016
07:24:35
Не очень понял, что ты под этим подразумеваешь под "несколько раз", но в любом случае yield * вместо обычного решит твой кейс

Это генератор, который возвращает другой генератор, возможности мало чем ограничены

Bogdan
28.10.2016
07:30:49
yield* это не то. Тут нужна возможность склонировать сам генератор. Я имею ввиду что после того как генератор выйдет из паузы на строке yield take(buttonClick); он станет на паузу на строке yield take(secondButtonClick) и будет ждать только это событие а повторные клики по первой кнопке уже никак не будут обрабатываться

Google
Дмитрий
28.10.2016
08:01:19
Далее с yield* и с co это можно сделать чуть изящнее. Ну то есть короче это стандартная практика)

Bogdan
28.10.2016
08:26:24
https://repl.it/EI7o/0
тут другой подход - конечно если вынести состояние и в while цикле генератор будет ждать только одно событие то и никаких проблем нет. Я имел ввиду именно возможность выполнять генератор как будто мы агрегируем стримы - то есть чтобы он возобновлялся в разных местах в зависимости от того от какого стрима придет событие раньше

Vasiliy
29.10.2016
00:25:34
интересно, существуют ли какие-то другие наглядные способы представления observables, кроме marble diagram's? т.е. это вроде бы как не сложно придумать. чего-то нехватает, чтобы себе удобно все представлять/объяснять

http://staltz.com/img/debugging-dep-graph.png, не, можно и так, конечно, но тут много чего нехватает и, вероятно, есть способ по-лучше нарисовать тоже самое, в визуальном программировании нормально работает интуиция

Vasiliy
29.10.2016
10:16:59
да, вот и я про то, что это можно нормально/понятно нарисовать

Roman
29.10.2016
10:41:39
йо, можно тут глупые вопросы позадавать?

andretshurotshka?❄️кде
29.10.2016
10:43:42
можно

Roman
29.10.2016
10:45:01
можно сделать стрим без initialData? а потом просто данные туда пробрасывать? flyd.js/most.js в примерах везде идут какие то данные которые потом пихаются в стрим? типа fromEvent и тд

andretshurotshka?❄️кде
29.10.2016
10:47:10
А как хотите пробрасывать? И какая библиотека? Rx?

Filipp
29.10.2016
10:58:55
Что такое initialData?

Vasiliy
29.10.2016
11:06:45
если я правильно понял о чем речь, то думаю можно, например, в rx есть: empty & never но судя по вопросу, вы хотите просто Rx.Observable.create(...) / new Rx.Observable(...) (если на примере rxjs), тк "пробрасывать" данные нужно именно в ф-ции: function myObservable(observer) { const datasource = new DataSource(); datasource.ondata = (e) => observer.next(e); datasource.onerror = (err) => observer.error(err); datasource.oncomplete = () => observer.complete(); return () => { datasource.destroy(); }; }

Google
Vasiliy
29.10.2016
11:11:48
если без библиотек http://jsbin.com/yazedu/1/edit?js,console,output (на примере "cold" observable) в таких observable "пробрасывание" данных, начинается в момент подписки

Roman
29.10.2016
17:02:14
question rxjs как можно прочекать, что .filter фильтрует правильно? я делаю сабскрайб, но там ни в один коллбек не приходит то что я в стрим отправил. а отправил я то что не должно прохдить фильтрацию типа какой то onValue даные пушаю в Subject

Vasiliy
29.10.2016
17:07:06
.do(x => console.log(x)) http://staltz.com/how-to-debug-rxjs-code.html (%

Ben Lesh из нетфликса мб запилит дебагер https://github.com/ReactiveX/RxJS/issues/60#issuecomment-120476702 когда-нибудь, он упоминал об этом

question rxjs как можно прочекать, что .filter фильтрует правильно? я делаю сабскрайб, но там ни в один коллбек не приходит то что я в стрим отправил. а отправил я то что не должно прохдить фильтрацию типа какой то onValue даные пушаю в Subject
"даные пушаю в Subject" это про event bus, тут нет реактивности лучше сделать нормальный observable: we only want to react to things. We don't want to control other entities. That's what we're doing when we use an API like .next. We're essentially controlling this other entity. For instance, if we pass the subject to other modules, then those other modules can control how the subject works. That's basically the opposite of reactive programming. If you do that too much, then there's no point in using RxJS. Still, there are cases where you know what you're doing and then you can use the subject as an event bus for multiple observers.

Roman
30.10.2016
21:33:48
question как в rxjs можно следующий пайп: const b = Observable.map((v) => { console.log(‘first', { v }); return 1; }); const c = thirdObservable((v) => { console.log(’second', { v }); return 2; }); const a = (new Subject()).combine(b, c).subscribe((f, s) => { console.log(‘result’, f, s) }); a.next(10); // => ‘first’, { v: 1 } // => ’second’, { v: 1 } // => ‘result’, 1, 2

Vasiliy
30.10.2016
21:41:21
я бы подсказал, но не понял вопрос

Roman
30.10.2016
21:41:56
О)

Я нуб в этом всем, потому пока не совсем информативно выражаю мысли. В общем есть две функции которые генерируют Observable. Есть Subject от которокого данные должны в эти обзервабл уходить. Надо чтобы данные шли в обзерваблы, при этом чтобы данные шли параллельно, а не подряд

Типа ветвление

Vasiliy
30.10.2016
21:45:16
.merge

посмотри на egghead.io курсы

там 3 курса из коротеньких видео по rxjs, если есть акк

Roman
30.10.2016
21:46:22
там 200$ акк стоит чтобы из смотреть :)

Vasiliy
30.10.2016
21:46:45
ща

Roman
30.10.2016
21:47:44
40 PER MONTH

увы)

это pro правда

Vasiliy
30.10.2016
21:48:23
сходу я даже не знаю что предложить, кроме https://github.com/ichpuchtli/awesome-rxjs и официальных доков

Google
Alex
30.10.2016
21:48:49
https://rutracker.org/forum/viewtopic.php?t=5173802

для тех кто не любит платить

Roman
30.10.2016
21:49:13
о, пасиб

Vasiliy
30.10.2016
21:49:46
короче) ща все будет (в личку напишу)

Roman
30.10.2016
21:49:53
не то чтобы я не люблю, мне так, задачку решить :) и посаппортить немного

круть, жду)

Alex
30.10.2016
21:50:17
https://egghead.io/courses/rxjs-subjects-and-multicasting-operators

бейспатно

Vasiliy
30.10.2016
21:51:36
но лучше не с него начинать) это уже после другого лучше смотреть ща я заделюсь видосиками (в личке)

Roman
30.10.2016
22:15:06
в стек вопрос, насколько вообще примелемо вот такое ветвление? export default (ev) => Observable.of(ev) .flatMap((e) => Observable.if( () => lineFilter(e), Observable.of(e).flatMap(line), Observable.if( () => areaFilter(e), Observable.of(e).flatMap(area), Observable.of(e), ) ) );

Vasiliy
30.10.2016
22:26:36
жестко, не очень

Roman
30.10.2016
22:27:28
как лучше?

Vasiliy
30.10.2016
22:28:08
нужна задача, мне так сложно понять замысел

Roman
30.10.2016
22:28:29
> хочу сделать конструктор над d3.js который бы строился через диспатч данных в стриме. > то есть есть некоторый сабж, на него подписаны N обсервабл которые есть композиция других обсервабл, итдитд, пока данные не отфильтруются и не дойдут до нужных обработчиков, которые в свою очередь уже будут фигачить что то над инстансом d3.js

Сюда продублирую)

Vasiliy
30.10.2016
22:29:35
все равно не очень понятно, нужно больше деталей: что за данные, какого рода композиции и т.д.

Roman
30.10.2016
22:32:46
я представляю себе это таким образом что есть одна труба в который я пихаю данные через .next данные это просто объект { type: 'someType', ...someOtherProps } относительно того какой type или что проброшено в ...someOtherProps, данные фильтруются в другие обзерваблы и так далее пока не падают до конечных обработчиков

\ parent | +----+-----+ O1 O2 O3 | +--+--+ C1 C2 C3

Vasiliy
30.10.2016
22:38:03
нужен пример

Roman
30.10.2016
22:38:13
ок

Google
Roman
30.10.2016
22:42:48
в субж уходит { type: 'shape', shape: 'line', } на субж, например подписан один обзервбл, которые фильтрует и валидирует по полю type(чтобы всякое говно не уходило дальше). далее на него подписаны еще два обзервабл. один чекает, по типу прямую работу с дом, второй как раз пропускает через себя дальше все где type === 'shape' далее объект уходит в обзервабл который в свою очередь создает уже d3.line по каким то параметрам

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

я сейчас делаю ОЧЕНЬ топорно, но буду рад любой конструктивной критике

а, и есть еще что я пока не совсем понимаю как обработать. мне нужно где то хранить промежуточные состояния там разных функций которые д3 генерит для расчета геометрии. сейчас это мьютабл объект, который я пихаю вместе с объектом-ивентом { type: '123123' }

может есть возможность как то его хранить в стриме, и сделать его имутабельным?

Vasiliy
30.10.2016
22:50:33
а для чего это? сорян за занудство, но я пока не понимаю

Filipp
30.10.2016
23:17:54
> js export default (ev) => Observable.of(ev) .flatMap((e) => Observable.if( () => lineFilter(e), Observable.of(e).flatMap(line), Observable.if( () => areaFilter(e), Observable.of(e).flatMap(area), Observable.of(e), ) ) ); кажется, лучше так js export default (ev) => lineFilter(ev) ? line(ev) : areaFilter(ev) : area(ev) ? Observable.of(e);

Vasiliy
30.10.2016
23:20:11
простите, конечно, но нельзя просто нарисовать то, что нужно (без этих изъебств с rx)? и нужно ли вообще что-либо рисовать? я как бы к этому подводил

Roman
31.10.2016
15:55:01
@vyorkin как то так

Nikita
09.11.2016
10:21:16
народ нужна помощь по rx, правда у меня проблема с javaRX, но непринципиально, да и разница небольшая =) "Observable<List<Question>>" .flatMapIterable(list -> list) .flatMap(q -> mServer.getQuestion(q.url)) .reduce(new ArrayList<Question>(), (list, item) -> { list.add(item); return list; }) .sort(...) ... и другие операторы есть observable<List<Question», я делаю из него observable объектов Question, потом flatmap и запрос на сервер который возвращает новый observable потом я собираю это обратно в list, потом ещё операторы и в из функции я отдаю Observable<List<Question» проблема в том что сколько элементов в списке есть, стоколько одновременно уйдет запросов к серверу, а мне нужно что бы запросы уходили с задержкой (например в 100мс) у меня было две идеи: 1. delay (немного подумав) эту я выкунул полный бред, рассказывать стыдно 2. взять observable interval с 100мс и на каждый его "тик" брать елемент из моего потока и делать запрос к серверу, но реализовать это у меня не получилось я недавно начал изучать rx буду благодарен любой помощи

Tim
09.11.2016
10:30:11
Не претендую на то что мой вариант правильный, но возможно так .flatMap(q => Observable.interval(100).mapTo(mServer.getQuestion(q.url)))

Vasiliy
09.11.2016
10:34:45
а чем обычный zip не подходит? Rx.Observable.from([1, 2, 3, 4]).zip(Rx.interval(1000));

http://jsbin.com/koyofey/69/edit?js,console мб я просто не понял что нужно сделать

Nikita
09.11.2016
10:42:41
спасибо сейчас попробую,

http://jsbin.com/koyofey/69/edit?js,console мб я просто не понял что нужно сделать
я что то подобное пробовал но у меня не получилось, а ваш пример мне помог, у меня много по другому, я плохо объянил свою проблему, но в итоге ваше идея мне помогла, спасибо

Vasiliy
09.11.2016
10:53:23
я не знаю насколько этот форк рабочий

https://github.com/ahstro/RxJSKoans вроде работает, обычно такие "коаны" помогают быстро освоиться, просто сейчас случайно вспомнил, npm test -- --watch

Nikita
09.11.2016
10:55:39
спасибо посмотрю

Google
Vadim
10.11.2016
11:38:35
В связи с подготовкой к интервью, такой вопрос: Может ли кто посоветовать сборник задач, тестов или вопросов rxjs?

Существует ли какой-нибудь онлайн-сервис с таким контентом?

Filipp
10.11.2016
11:42:08
а не

нужно сначала concatMap на delay, а потом всё остальное

question$.concatMap(q => $.of(q).delay(100))

как-то так

возможно для этого есть один оператор

question$.concatMap(q => $.of(q).delay(100))
тут каждый дилей начинается не раньше, чем закончился предыдущий

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