我想创建一个可观察量,它接受N个可观察源,并通过N元函数转换它们。每当其中一个源可观察量发出一个项目时,这个可观察量的 onNext(( 就会调用这个函数,就像这样:f(null,null,null,o3.val,null,null(,其中 o3 是刚刚发出一个值的源。
就像 combineLatest 一样,其中调用 f 时,所有源的最后一个发出的值组合在一起,但在 f 中,我们得到所有其他源的空值。
f 的主体可以像一个开关:
function f(v1,v2,...vn) {
if (v1) { ... }
else if(v2) { ... }
}
这可能吗?还有其他方法可以实现此行为吗?
你可能想这样的事情
const obsS1 = obsSource1.pipe(map(data => [data, 'o1']));
const obsS2 = obsSource2.pipe(map(data => [data, 'o2']));
....
const obsSN = obsSourceN.pipe(map(data => [data, 'oN']));
merge(obs1, obs2, ..., obsN)
.subscribe(
dataObs => {
// do what you need to do
// dataObs[0] contains the value emitted by the source Observable
// dataObs[1] contains the identifier of the source Observable which emitted last
}
)