RxJS等待可观察对象的全部完成

时间:2018-10-30 23:36:07

标签: rxjs

我试图在下一个Observable执行之前完整地完成一个Observable的工作(这意味着调用Complete函数)。我已经尝试了许多不同的方法,但是最接近的是:

function() {
  observableA.subscribe(
    (value) => { },
    (err) => { },
    () => {
      createObservableB();
    }
  );
  return observableB; // ????
}

但是我需要从此函数返回createObservableB()的结果。同样,在对observableA中的每个单个值进行完整迭代之前,无法调用createObservableB。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您可以尝试last运算符

obsA.pipe(last(),mergeMap(()=>obsB)).subscribe()

答案 1 :(得分:0)

更多“干净”的解决方案将仅使用concat,因为它仅在前一个完成时才逐一订阅Observables:

import { concat } from 'rxjs';

concat(observableA, observableB)
  .subscribe(...)

如果您想忽略来自observableA的所有值,则可以在将ignoreElements()传递到concatobservableA.pipe(ignoreElements()))时使用。{p>