Vla*_*tea 5 javascript rxjs rxjs-pipeable-operators rxjs6
假设我们有一个主题,它可以返回一组给定的值,所有这些值可能需要不同的方法来处理。我们可以争论是否应该如此,但这并不是我调查的重点。
所以......为了处理这个问题,我们的代码可能看起来像这样:
var sub = new Subject();
sub.subscribe(
data => {
if (caseA) {
// do something
}
if (caseB) {
// do something else
}
});
Run Code Online (Sandbox Code Playgroud)
这一切都很棒,一切都很棒……但我想知道是否有一些操作符可以链接起来以使其更加rx-ish?想到了过滤器,但是链接 caseA 和 caseB 只会使其不起作用(显然),因为它最终会过滤掉两者。
所以,我的问题归结为:是否有可能有任何类似于下面的伪代码的东西?您知道有任何操作员可以像这样工作吗?
var sub = new Subject();
sub.pipe(
magicOperator(//handles caseA),
magicOperator(//handles caseB),
)
subscribe(
data => {
// handles common thread
});
Run Code Online (Sandbox Code Playgroud)
只需创建一个具有大小写切换功能的对象即可使代码更漂亮
const handler={
case1:()=>..handle case1,
case2:()=>...handle case2
}
sub.map(result=>handler[result])
// experimental switchCase operator
const switchCase=handlers=>(source)=>source.map(val=>handlers[val]())
// usage
sub.pipe(switchCase({
case1:....,
case2:....
}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |