计算可观察对象完成之前发出的值的数量?

时间:2018-11-07 01:26:53

标签: node.js typescript rxjs rxjs6

尝试验证可观察对象在完成之前会发出一定数量的事件。这是伪代码:

o.pipe(count).subscribe(count=>
  expect(count).toEqual(4));

有想法吗?

1 个答案:

答案 0 :(得分:3)

count运算符的工作方式如下:

  

计算源中的发射数量,并在源完成(source)时发射该数量

因此您可以像这样使用它:

obs.pipe(count()).subscribe(totalEmissions => expect(totalEmissions).toEqual(4))

请注意,您无法真正衡量在原始可观察物发生之前 发生了多少事件,因为如果未完成,则您还没有完成计数!

但是,您可以使用tap记录每次发射的“索引”:

let count = 0
obs.pipe(tap(() => console.log("emitted! Index: " + count++))).subscribe(obsValue => {/*...*/})

我不确定您的用例是什么,但这就是您的使用方式。