【发布时间】:2017-01-06 07:55:51
【问题描述】:
我有以下 observable,用于验证模型的更改。
sn-p 代码如下:
const oSaveCancelStateOb = this.determineSaveCancelStateOb(oTableItemChanges, oSaveCancelStateModelOb);
oSaveCancelStateOb.subscribe(function (oOb) {
console.log("Subscribe 1");
});
oDelBtnOb
.switchMapTo(oSaveCancelStateOb)
.subscribe(function (oOb) {
console.log("Subscribe 2");
});
determineSaveCancelStateOb 的实现如下:
determineSaveCancelStateOb: function (oInspectionServiceOb, oSaveCancelStateModelOb) {
return oInspectionServiceOb
.map(function (bState) {
return bState ? {bSave: true, bCancel: true} : {bSave: false, bCancel: false};
})
.switchMap(function (oState) {
return oSaveCancelStateModelOb
.map(function (oModel) {
return {oModel: oModel, oState: oState};
})
});
},
oSaveCancelStateOb 验证,如果模型上发生了某些变化,则它是冷可观察的。
第二个 observable oDelBtnOb 是一个 hot observable,它监听鼠标按钮的点击。
我的期望是,当我点击按钮时,它应该会在控制台上显示:
Subscribe 1
Subscribe 2
但我只有一个
Subscribe 2
为什么第一个 observable 没有被订阅?
更新
看看下面的代码sn-p:
//Create an observable that emits a value every second
const sample1$ = Rx.Observable.of(true);
sample1$.subscribe(val => console.log(val))
//Create an observable that emits every time document is clicked
const sample2$ = Rx.Observable.fromEvent(document, 'click');
sample2$.switchMapTo(sample1$).subscribe(val => console.log(val))
当我点击文档时,我预计true 会输出两次。
【问题讨论】:
标签: javascript rxjs rxjs5