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

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

Дмитрий
28.10.2016
07:54:54

Google

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

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

Дмитрий
28.10.2016
08:36:06

Vasiliy
29.10.2016
00:25:34
интересно, существуют ли какие-то другие наглядные способы представления observables, кроме marble diagram's? т.е. это вроде бы как не сложно придумать. чего-то нехватает, чтобы себе удобно все представлять/объяснять
http://staltz.com/img/debugging-dep-graph.png, не, можно и так, конечно, но тут много чего нехватает и, вероятно, есть способ по-лучше нарисовать тоже самое, в визуальном программировании нормально работает интуиция

andretshurotshka?❄️кде
29.10.2016
06:46:21

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 когда-нибудь, он упоминал об этом


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
ща

Alex
30.10.2016
21:47:18

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 как то так

andretshurotshka?❄️кде
04.11.2016
08:40:40
здрасте


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
спасибо сейчас попробую,

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))
как-то так
возможно для этого есть один оператор

Vasiliy
10.11.2016
11:46:54