我有以下observable,验证模型的更改。
代码段如下所示:
avg = ((3.5 * a) + (7.5 * b)) / (3.5 + 7.5);
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
是一个热门观察者,它会在鼠标按钮上点击。
我的期望是,当我点击按钮时,它应该在控制台上显示我:
oDelBtnOb
但我只有
Subscribe 1
Subscribe 2
为什么第一个observable没有订阅?
更新
请查看以下代码段:
Subscribe 2
当我点击文档时,我希望//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))
将输出两次。
答案 0 :(得分:1)
我理解你的期望不正确的代码。在上一个示例中,将发生以下情况:
sample1$
上的订阅将执行并处理流中的所有值,并为每个可用值将其发送到控制台。之后sample1$
订阅完成。switchMapTo
对新的sample1$
流进行了处理,其值(仅true
)被发出并发送到控制台,之后此观察结果完成。