RxJS-多次调用FlatMap观察器
我正在试图了解flatMap的工作原理。我理解这是一种处理可观RxJS-多次调用FlatMap观察器,rxjs,Rxjs,我正在试图了解flatMap的工作原理。我理解这是一种处理可观的方法 不管怎么说,我当时正在测试它的行为,结果被这个问题困住了: let plusDom = document.querySelector('#plus'); let minusDom = document.querySelector('#minus'); let minusSource = Rx .Observable .fromEvent(minusDom, 'click
let plusDom = document.querySelector('#plus');
let minusDom = document.querySelector('#minus');
let minusSource = Rx
.Observable
.fromEvent(minusDom, 'click');
let plusSource = Rx.Observable
.fromEvent(plusDom, 'click');
plusSource
.flatMap(function(c){
console.log('Flatmap called');
return minusSource;
})
.subscribe(function(e){
console.log('done');
})
这里是jsbin:
我不理解这种行为:
3 clicks on plusDom prints:
Flatmap called
Flatmap called
Flatmap called
1点击minusDom打印:
done
done
done
为什么单击minusDom时,它会像单击plusDom一样多次重放事件?
flatMap
基本上将返回的流平放在原始流中。您可能正在寻找的是switchMap
,它将切换到返回的流,并在原始源通过丢弃旧流来发送数据时切换到新流
当有疑问时,switchMap通常是最安全的选择
请参见大理石图进行比较:
Flatmap不会删除以前“展平”的流,并且:
Switchmap删除以前“切换”的流