gpt4 book ai didi

RxJS - 多次调用 FlatMap 观察者

转载 作者:行者123 更新时间:2023-12-04 20:33:12 27 4
gpt4 key购买 nike

我想了解如何 平面 map 作品。我知道这是处理 Observable< Observable < T>> 的一种方式。

无论如何,我正在测试它的行为并陷入困境:

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: https://jsbin.com/sefoyowuqe/edit?html,js,console,output

我不明白这种行为:
3 clicks on plusDom prints:
Flatmap called
Flatmap called
Flatmap called

1 单击 minusDom 打印:
done
done
done

为什么当点击 minusDom 时,它会像我们点击 plusDom 一样重播事件?

最佳答案

flatMap基本上将返回的流平放在原始流中。您可能正在寻找的是 switchMap ,当原始源通过丢弃旧数据发出数据时,它将切换到返回的流并切换到新流。

如有疑问,switchMap 通常是最安全的选择。

参见大理石图进行比较:

Flatmap 不会删除以前“扁平化”的流,并且:

flatMap Marble Diagram

Switchmap 删除以前“切换”的流。

switchMap Marble Diagram

关于RxJS - 多次调用 FlatMap 观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com