RxJS - 将Observable分成两个,等待第一个完成

时间:2018-04-19 21:04:31

标签: javascript rxjs observable reactive-programming

我有一个看起来或多或少像这样的Observable:

-a--b-c---d--e----f--->

其中a,b,c,d,e,f是发射值。

我想将这个Observable分成两个Observable,这样最后一个发射值就是"单独"。

-a--b-c---d--e-------->

------------------f--->

现在,我想等待第一个Observable完全完成(甚至是内部Observable),然后执行第二个Observable。

我知道,我应该使用concat,但我实际上正在努力将Observable分成两个

2 个答案:

答案 0 :(得分:3)

这似乎相当简单,因为有skipLasttakeLast运算符:

const source = ...;

const first = source.skipLast(1);
const second = source.takeLast(1);

答案 1 :(得分:1)

let Rx = require('rxjs/Rx');

let arr = ["a", "b", "c", "d", "e"]
let par = Rx.Observable.from(arr).partition((v, i) => i < arr.length - 1)
let res = Rx.Observable.concat(par[0], par[1])

res.subscribe(
    x => console.log('On Next: %s', x),
    e => console.log('On Error: %s', e),
    () => console.log('On Complete')
)