代码之家  ›  专栏  ›  技术社区  ›  feerlay

RxJS-将可观察对象一分为二,等待第一个完成

  •  1
  • feerlay  · 技术社区  · 6 年前

    我有一个可以观察到的东西,看起来或多或少像这样:

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

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

    我想把这个可观测值分成两个可观测值,以这样的方式,最后发出的值是“单独的”。

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

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

    我知道,我可能应该使用concat,但实际上我正在努力将可观测值一分为二

    2 回复  |  直到 6 年前
        1
  •  3
  •   martin    6 年前

    这似乎相当简单,因为 skipLast takeLast 操作员:

    const source = ...;
    
    const first = source.skipLast(1);
    const second = source.takeLast(1);
    
        2
  •  1
  •   Hayk Hakobyan    6 年前
    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')
    )