Rxjs:创建Observable,它是另一个observable的延迟偏移量

时间:2017-06-08 02:03:53

标签: rxjs reactive-programming

是否有一种简单的方法可以创建一个与另一个相对的可观察量?

例如,假设Observable1发出[1,2,3,4,5]。

如何从Observable1创建Observable2,使Observable2发出[1,2,3,4](因此,当Observable1发出1时它不发出任何内容,当Observable1发出2时发出1,等等。)

  

Obs1开始   ------- -------- 1 2 3 ---------- ------------ 4 --------- ---- 5 ----------------->

     

Obs2开始   ----------------- 1 ---------- ------------ 2 3 -------- ----- 4 ----------------->

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用bufferCountmap运算符执行您想要的操作:



const source = new Rx.Subject();
const offset = source.bufferCount(2, 1).map(values => values[0]);

source.subscribe(value => console.log(`source = ${value}`));
offset.subscribe(value => console.log(`offset = ${value}`));

source.next(1);
source.next(2);
source.next(3);
source.next(4);
source.next(5);

.as-console-wrapper { max-height: 100% !important; top: 0; }

<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
&#13;
&#13;
&#13;

每次收到一个值时,

bufferCount(2, 1)将发出一个双值缓冲区 - 一旦缓冲区中有两个值,即。因此,缓冲区中的第一个值将被一个源发射偏移。

你可以用pairwise()代替bufferCount(2, 1)做同样的事情。