在订阅期间从Observable返回最新的发射值计数

时间:2017-08-24 09:32:59

标签: javascript rxjs observable

我正在寻找一种方法来获得一个运行的发射值计数器并使用该数字以及"真实的" Observable发出的值。

大理石

Obs: |--  A  ---  B  -----  C  ----  D  |
Res: |--[A,1]---[B,2]-----[C,3]----[D,4]|

所以,我希望新的Observable发出一个既包含计数也包含原始值的数组。

代码

var letters = Rx.Observable.of(A, B, C, D);
var result = letters.thisOperator(); //version 1
var result = Rx.Observable.thisOperator(letters); // 2
result.subscribe(x => console.log(x));
[A, 1]
[B, 2]
[C, 3]
[D, 4]

1 个答案:

答案 0 :(得分:1)

您可以使用map

Rx.Observable.of('A', 'B', 'C', 'D')
  .map((val, i) => [val, i])
  .subscribe(console.log);

或者您可以更轻松地map

.map((...args) => args)

打印:

[ 'A', 0 ]
[ 'B', 1 ]
[ 'C', 2 ]
[ 'D', 3 ]