RxJS组合运算符,说明

RxJS组合运算符,说明,rxjs,observable,combinelatest,Rxjs,Observable,Combinelatest,我试图理解combineAll操作符是如何工作的。 我使用的示例如下: 从'rxjs/operators'导入{take,map,combineAll}; 从'rxjs'导入{interval}; 常量源$=间隔(1000)。管道(取(2)); 常量示例$=源$.pipe( 映射(val=> 间隔(1000)。管道( map(i=>`Result(${val}):${i}`), 采取(5) ) ) ); 范例$ .管道(combineAll()) .subscribe(console.log);

我试图理解
combineAll
操作符是如何工作的。 我使用的示例如下:

从'rxjs/operators'导入{take,map,combineAll};
从'rxjs'导入{interval};
常量源$=间隔(1000)。管道(取(2));
常量示例$=源$.pipe(
映射(val=>
间隔(1000)。管道(
map(i=>`Result(${val}):${i}`),
采取(5)
)
)
);
范例$
.管道(combineAll())
.subscribe(console.log);
然后输出为:

[“结果(0):0”,“结果(1):0”]
[“结果(0):1”,“结果(1):0”]
[“结果(0):1”,“结果(1):1”]
[“结果(0):2”,“结果(1):1”]
[“结果(0):2”,“结果(1):2”]
[“结果(0):3”,“结果(1):2”]
[“结果(0):3”,“结果(1):3”]
[“结果(0):4”,“结果(1):3”]
[“结果(0):4”,“结果(1):4”]
为了找出原因,我做了一个简单的计划:

从文档中,我了解到每当任何一个内部可观测值发出一个值时,这个发出的值就会被所有其他内部可观测值的最后一个值合并

在上面的方案中,我们可以看到,10个值在时间内由内部观察值发出,所以我希望得到一个随时间变化的10个值的输出,但它是9

此外,在输出的第一行中:

[“结果(0):0”,“结果(1):0”])
“结果(1):0”的0是否对应于空值?因为可观测的“内部2”还没有发出任何东西

这里是我期望的输出:

[“结果(0):0”,“结果(1):0”]
[“结果(0):1”,“结果(1):0”]
[“结果(0):1”,“结果(1):0”]
[“结果(0):2”,“结果(1):0”]
[“结果(0):2”,“结果(1):1”]
[“结果(0):3”,“结果(1):1”]
[“结果(0):3”,“结果(1):2”]
[“结果(0):4”,“结果(1):2”]
[“结果(0):4”,“结果(1):3”]
[“结果(0):4”,“结果(1):4”]
这显然是错误的,但我没有发现我的错误,有人能解释一下吗

当可观测值完成时,通过应用
combineLatest
展平可观测值

而且,

将实际等待所有输入观察值发出至少一次


因此,包含“内部1”可观测值的第一个值的
combineAll
可观测值的第一次发射不会发生,直到“内部2”可观测值发射其第一个值。所以只有九次排放,而不是十次。

非常感谢!这就是我遗漏的,换句话说,第二次迭代中的CombineTest将在任何一个观测值完成时解析,而combineAll仅在两个观测值都解析时解析?