Использование RxJS 5
, возможно ли это?Можно ли остановить Rx.Subject от излучения внутри абонента, например event.stopPropagation?
var source = new Rx.Subject();
source.map((data) => {console.log('map1'); return data;})
.subscribe((data) => {
console.log('subscribe1', data);
if(someCondition) {
source.stop(); //????????
}
});
source.map((data) => {console.log('map2'); return data;})
.subscribe((data) => {
console.log('subscribe2', data);
});
Так что, когда я называю source.next("Hello World");
только первый абонент будет уведомлен. Конечно, это не сработает в source.stop()
, потому что функции stop
не существует, но это просто вопрос моего вопроса.
Есть способ сделать это, например event.stopPropagation
do?
Теперь я получаю изображение правильно. Итак, если 'filter' возвращает' false', следующая карта не будет вызываться? –
Я знаю, что вы объясните, что у меня нет цепи, но подписчики работают в том же порядке, что и подписываются, не делают ее цепочкой? RxJS должен предоставить способ сказать: «эй, не испускай больше». Или это выходит из схемы Observable? –
@CastroRoy Я бы стал цепочкой, если 'source' отправил элемент в' subscribe1', затем 'subscribe1' отправил его в' subscribe2'. Таким образом, 'subscribe1' имеет контроль над значением, которое он отправляет. Он может изменить его, а не отправлять его вообще. С другой стороны, когда у вас есть «источник» и два подписчика, они получают значение независимо друг от друга. Если 'filter()' return false, то значение не распространяется на последующий oeprator. – martin