是否有一种简单的方法可以创建一个与另一个相对的可观察量?
例如,假设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 ----------------->
谢谢!
答案 0 :(得分:3)
您可以使用bufferCount
和map
运算符执行您想要的操作:
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;
每次收到一个值时,
bufferCount(2, 1)
将发出一个双值缓冲区 - 一旦缓冲区中有两个值,即。因此,缓冲区中的第一个值将被一个源发射偏移。
你可以用pairwise()
代替bufferCount(2, 1)
做同样的事情。