RxJS:是否有运营商充当mergeScan,但在外部流发出时取消订阅内部流

RxJS:是否有运营商充当mergeScan,但在外部流发出时取消订阅内部流,rxjs,Rxjs,我想要一个运算符,它可以作为mergeScan和switchMap的组合使用。它维护来自最后一个订阅的内部流的最后一个值,但是当外部流发出时,它只使用最新的值作为累加器并取消订阅最后一个内部流 s$.pipe( someOp((acc,cur)=>{ 如果(e){ 返回$.pipe( 扫描((acc1,cur1)=>f(acc1,cur1),acc), ); }否则{ 返回b$管道( 扫描((acc1,cur1)=>g(acc1,cur1),acc), ); } },init)); 应作为:

我想要一个运算符,它可以作为
mergeScan
switchMap
的组合使用。它维护来自最后一个订阅的内部流的最后一个值,但是当外部流发出时,它只使用最新的值作为累加器并取消订阅最后一个内部流

s$.pipe(
someOp((acc,cur)=>{
如果(e){
返回$.pipe(
扫描((acc1,cur1)=>f(acc1,cur1),acc),
);
}否则{
返回b$管道(
扫描((acc1,cur1)=>g(acc1,cur1),acc),
);
}
},init));
应作为:

s$:--T----F----
a$:-a--a--a--
b$:--b--b--b-
结果$:----x----w-
在哪里
x=f(初始,a)
w=g(x,b)
换句话说,它不应该等待内部流完成


我知道我可以实现个人订户和运营商,但这可以实现为原始RxJS运营商的管道吗?

我认为您可以在mergeScan上使用“concurrent”参数

mergeScan(accumulatorFn, init, 1)
concurrent限制了对输入可观察对象的订阅数量,它的默认值为正无穷大,将其设置为1以仅包含1


文档:

我认为您可以在mergeScan上使用'concurrent'参数

mergeScan(accumulatorFn, init, 1)
concurrent限制了对输入可观察对象的订阅数量,它的默认值为正无穷大,将其设置为1以仅包含1


文档:

mergeScan是一个罕见的用例tbh。不太清楚我发现它不起作用。我希望在外部流发出后它会取消订阅当前的内部流,但它现在正在等待内部流完成。mergeScan是一个罕见的用例tbh。不太清楚我发现它不起作用。我希望它会在外部流发出后取消订阅当前的内部流,但它现在正在等待内部流完成。