订阅后继续直播
Continue stream after subscribe
我有两个流,如下所示:
const source1 = Rx.Observable.of([1,2,3,4,5])
.map(() => "I am source 1")
.do((x) => console.log(x));
const sub1 = source1.subscribe((v) => console.log("Subscribe 2"));
const source2 = Rx.Observable.fromEvent(document, 'click')
.do(() => console.log("execute!"))
.switchMapTo(source1)
.do(() => console.log("After switch map."))
.map((x) => "source2");
source2.subscribe((x) => console.log(x));
没有点击文档,我得到以下输出:
"I am source 1"
"Subscribe 2"
进一步点击输出为:
"execute!"
"I am source 1"
"After switch map."
"source2"
如何通过进一步点击强制订阅流 source1
,然后继续流 source2
?
点击几次后我期待以下输出:
"I am source 1"
"Subscribe 2"
"execute!"
"I am source 1"
"After switch map."
"source2"
Observables 可以被认为是函数。订阅就像调用一个函数。
即
const o = Rx.Observable.of(1);
o.subscribe(x => console.log(x));
与
非常相似
const f = () => 1;
console.log ( f() );
就像调用函数不修改函数一样。订阅 Observable 不会修改 observable。订阅没有以任何方式附加到 Observable。这是保持任何状态的返回订阅。
您示例中的两个订阅调用是完全独立的,与此相同:
const source1 = Rx.Observable.of([1,2,3,4,5])
.map(() => "I am source 1")
.do((x) => console.log(x));
const sub1 = source1.subscribe((v) => console.log("Subscribe 2"));
const source1_v2 = Rx.Observable.of([1,2,3,4,5])
.map(() => "I am the same as source 1")
.do((x) => console.log(x));
const source2 = Rx.Observable.fromEvent(document, 'click')
.do(() => console.log("execute!"))
.switchMapTo(source1_v2)
.do(() => console.log("After switch map."))
.map((x) => "source2");
source2.subscribe((x) => console.log(x));
我有两个流,如下所示:
const source1 = Rx.Observable.of([1,2,3,4,5])
.map(() => "I am source 1")
.do((x) => console.log(x));
const sub1 = source1.subscribe((v) => console.log("Subscribe 2"));
const source2 = Rx.Observable.fromEvent(document, 'click')
.do(() => console.log("execute!"))
.switchMapTo(source1)
.do(() => console.log("After switch map."))
.map((x) => "source2");
source2.subscribe((x) => console.log(x));
没有点击文档,我得到以下输出:
"I am source 1"
"Subscribe 2"
进一步点击输出为:
"execute!"
"I am source 1"
"After switch map."
"source2"
如何通过进一步点击强制订阅流 source1
,然后继续流 source2
?
点击几次后我期待以下输出:
"I am source 1"
"Subscribe 2"
"execute!"
"I am source 1"
"After switch map."
"source2"
Observables 可以被认为是函数。订阅就像调用一个函数。
即
const o = Rx.Observable.of(1);
o.subscribe(x => console.log(x));
与
非常相似const f = () => 1;
console.log ( f() );
就像调用函数不修改函数一样。订阅 Observable 不会修改 observable。订阅没有以任何方式附加到 Observable。这是保持任何状态的返回订阅。
您示例中的两个订阅调用是完全独立的,与此相同:
const source1 = Rx.Observable.of([1,2,3,4,5])
.map(() => "I am source 1")
.do((x) => console.log(x));
const sub1 = source1.subscribe((v) => console.log("Subscribe 2"));
const source1_v2 = Rx.Observable.of([1,2,3,4,5])
.map(() => "I am the same as source 1")
.do((x) => console.log(x));
const source2 = Rx.Observable.fromEvent(document, 'click')
.do(() => console.log("execute!"))
.switchMapTo(source1_v2)
.do(() => console.log("After switch map."))
.map((x) => "source2");
source2.subscribe((x) => console.log(x));