我认为Rx.Observable.prototype.reduce
就像Array.prototype.reduce
所以我就这样编写代码
function fn(prev, num){
return Rx.Observable.of(prev+num);
}
fn(1, 1).switchMap(res =>fn(res, 2))
.switchMap(res =>fn(res, 3))
.subscribe(x=>console.log(x));
// 7
Rx.Observable.from([2,3]).reduce(
(prev, cur) =>prev.switchMap(res => fn(res, cur)),
fn(1, 1)
).subscribe(x=>console.log(x))
// SwitchObservable {source: FlatMapObservable}
我想知道为什么我不能以这种方式使用扫描?我怎么能以正确的方式使用运算符?
答案 0 :(得分:1)
这是因为你的累加器是一个Observable。您可以通过再次调用switchMap来获取您的价值:
<input type="button" id="primaryButton" onclick="ExistingLogic()" />
<input type="button" id="secondaryButton"/>
$('#secondaryButton').click(function(){
$("#primaryButton").click();
})
修改后
Rx.Observable.from([2,3]).scan(
(prev, cur) =>prev.switchMap(res => fn(res, cur)),
fn(1, 1)
).last().switchMap(x => x).subscribe(x=>console.log(x))