
Vadim
14.10.2016
12:42:20

aodzaki.toko
14.10.2016
12:42:26

Vasiliy
14.10.2016
12:42:31
они одинаковые, все 3, я именно про это спрашиваю

Vadim
14.10.2016
12:42:46

Google

Vasiliy
14.10.2016
12:42:50
ну в прямом

aodzaki.toko
14.10.2016
12:43:02

Vasiliy
14.10.2016
12:43:19
export interface NextObserver<T> {
isUnsubscribed?: boolean;
next: (value: T) => void;
error?: (err: any) => void;
complete?: () => void;
}
export interface ErrorObserver<T> {
isUnsubscribed?: boolean;
next?: (value: T) => void;
error: (err: any) => void;
complete?: () => void;
}
export interface CompletionObserver<T> {
isUnsubscribed?: boolean;
next?: (value: T) => void;
error?: (err: any) => void;
complete: () => void;
}

aodzaki.toko
14.10.2016
12:43:39
это интерфейс
интерфейс определяет соглашение о наименовании методов

Vasiliy
14.10.2016
12:43:59
я знаю)

aodzaki.toko
14.10.2016
12:44:04
но не об их реализации

Vasiliy
14.10.2016
12:44:05
3 одинаковых интерфейса
зачем?

aodzaki.toko
14.10.2016
12:44:10
и что?

Vadim
14.10.2016
12:44:20

aodzaki.toko
14.10.2016
12:44:21
за тем, чтобы сделать typeof

Сергей
14.10.2016
12:44:32
а наследовать интерфейсы нельзя?

Google

Vasiliy
14.10.2016
12:45:06

aodzaki.toko
14.10.2016
12:45:52

Vadim
14.10.2016
12:45:57

aodzaki.toko
14.10.2016
12:46:11

Сергей
14.10.2016
12:46:32
нуок
Хотя выглядит монструозно

Vadim
14.10.2016
12:48:35
if (nextOrObserver[$$rxSubscriber]) {
return nextOrObserver[$$rxSubscriber]();
}
Тут вообще все просто. Проверяется, если у объекта есть поле с именем равным содержащемуся в переменной $$rxSubscriber, то выдывается это поле как метод

Filipp
14.10.2016
12:48:43
это как картинка с "найди 10 отличий"

Vasiliy
14.10.2016
12:49:00

Vadim
14.10.2016
12:49:21

Vasiliy
14.10.2016
12:49:41
эмм, а в чем отиличие? кроме имени

aodzaki.toko
14.10.2016
12:49:49

Vasiliy
14.10.2016
12:50:04
так я сверху вниз иду

aodzaki.toko
14.10.2016
12:50:19

Filipp
14.10.2016
12:50:21
остальные опциональные

aodzaki.toko
14.10.2016
12:50:35
и посмотреть как данные бегают )

Vasiliy
14.10.2016
12:50:49
теперь все понятно)

Google

Vasiliy
14.10.2016
12:51:27
subscribe({next: e => console.log(e)})
.subscribe({error: err => console.log(err)})
.subscribe({next: e => console.log(e), error: err => console.log(err)})
.subscribe({complete: () => console.log("done")})

Filipp
14.10.2016
12:51:30
то есть общая идея в том, что обязательно должен быть хотя бы один из трёх

Vasiliy
14.10.2016
12:51:31
для этого ^

Filipp
14.10.2016
12:51:39
ага
на самом деле такое тоже сработало бы
export interface NextObserver<T> {
isUnsubscribed?: boolean;
next: (value: T) => void;
error?: (err: any) => void;
complete?: () => void;
}
export interface ErrorObserver<T> {
isUnsubscribed?: boolean;
error: (err: any) => void;
complete?: () => void;
}
export interface CompletionObserver<T> {
isUnsubscribed?: boolean;
complete: () => void;
}
и возможно было бы даже понятнее
но видимо авторы больше любят симметрию, чем понятность)

Vadim
14.10.2016
12:55:14
Или копи-пейст )

Vasiliy
14.10.2016
12:56:48
но про toSubscriber не понял пока, зачем им символ там
+ вот этот момент не очень понятен в Observable.ts:
if (sink.syncErrorThrowable) {
sink.syncErrorThrowable = false;
if (sink.syncErrorThrown) {
throw sink.syncErrorValue;
}
}
последнее понял

andretshurotshka?❄️кде
14.10.2016
13:00:37
https://github.com/tc39/proposal-observable

Vasiliy
14.10.2016
13:04:23
да, нашел, спасибо

Алексей
22.10.2016
19:17:24
https://github.com/davidkpiano/RxCSS
https://youtu.be/lTCukb6Zn3g

andretshurotshka?❄️кде
23.10.2016
06:54:33

Vadim
23.10.2016
10:03:38

Filipp
23.10.2016
11:15:26
css переменные это сильно упрощают
потому что тебе может быть достаточно поменять один параметр, чтоб повлиять сразу на много правил

Google

Vasiliy
23.10.2016
11:16:27
да не, это прикольный эксперимент, я ваще не знал что их из js можно менять, например)

Filipp
23.10.2016
11:24:46
плюс они (RxCSS), я так понял, добавляют неймспейсы, что тоже может быть довольно удобно

Vasiliy
23.10.2016
17:36:13
сейчас попробую объяснить (:
у меня есть:
Rx.Observable.timer(timeout, interval).mergeMap(async () => {
...
await upload(entries);
...
});
^ как тут сделать await?
как заставить код в upload выполняться последовательно?
async function upload(entries: UploadEntry[]) {
for (let { media, source } of entries) {
try {
const entry = await restoreEntry<DirectoryEntry>(source.name);
...
} catch (e) {
...
}
}
}

Дмитрий
23.10.2016
17:48:13

Vasiliy
23.10.2016
17:52:28
ну там просто композиция ф-ций кот. возвращают промисы, слева-направо
я не нашел связи пока со своей фигней
да у меня рамда еще не подключена, я думаю как-то без нее можно справиться
лан, я в жсбин пошел, не понимаю пока ничего

Filipp
23.10.2016
21:14:40
concatMap?
сейчас попробую объяснить (:
у меня есть:
Rx.Observable.timer(timeout, interval).mergeMap(async () => {
...
await upload(entries);
...
});
^ как тут сделать await?
как заставить код в upload выполняться последовательно?
async function upload(entries: UploadEntry[]) {
for (let { media, source } of entries) {
try {
const entry = await restoreEntry<DirectoryEntry>(source.name);
...
} catch (e) {
...
}
}
}

pepsi ¯\_(ツ)_/¯
27.10.2016
09:50:34
Реактивы, поясните на пальцах, почему у Штальца так бомбит от cancellation token?

Алексей
27.10.2016
09:53:01
https://gist.github.com/danharper/ad6ca574184589dea28d
да тот-же вопрос мучает. Что с ним не так?

Vasiliy
27.10.2016
09:53:49
а можно ссылочку где он высказывался про cancellation token?

pepsi ¯\_(ツ)_/¯
27.10.2016
09:55:45

Vasiliy
27.10.2016
09:57:30
"There is no need for Cancel Tokens. They are an alternative, non-popular, weird way of replacing unsubscribe()."
я пока не понял в чем суть противоречия (: но я нуб в этих делах

pepsi ¯\_(ツ)_/¯
27.10.2016
09:59:28
https://twitter.com/andrestaltz/status/779036880386060288

Vasiliy
27.10.2016
10:00:13
вот тут еще инфа https://github.com/tc39/proposal-observable/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20cancellable

Filipp
27.10.2016
10:25:38
Ну это типа проактивно, если я правильно понимаю

Ilya
27.10.2016
15:25:40
Яннп.

Google

Ilya
27.10.2016
15:26:11
Штольцу много от чего рвет, он вообще по жизни порванный.

Alex
27.10.2016
17:52:27
Просто ему не нравится, когда "обещания не выполняются")
это все последствия морально-нравственного разложения запада

Bogdan
28.10.2016
06:13:57
Народ я тут подумал - что если смешать csp со стримами вроде rxjs получится некая новая концепция императивных стримов:
while (true){
var countClicks = 0;
var click = yield take(buttonClick);
countClicks++;
yield take(secondButtonClick);
someApi.send(countClicks)
}
В этом примере мы подсчитываем количество кликов по одной кнопке и отправляем на сервер только при клике по другой кнопке. Правда с текущими генераторами такое сложно провернуть потому что их нельзя склонировать

Дмитрий
28.10.2016
06:56:52