在观察者工作之前如何等待调用方法?

How to await call method until observers works?

我有一些可观察的函数:

function a(): Observable<any> { }

function b(): Observable<any> { }

在我将这些 observables 合并为一个之后:

let awaitingObservers = [a(), b()];

public getObservables() {
  forkJoin(awaitingObservers).subscribe(results => {
    return results;
  });
}

所以,我调用的最后一个函数是:

function start() {

  if (this.currentForm().functions) {
    this.currentForm().functions.iterate();
    this.currentForm().functions.getObservables();
  }

  /* Return next form */

  this.current = nextForm;

}

此函数检查是否退出任何要调用的可观察方法,然后调用 this.currentForm().functions.iterate();

在线订阅后:this.currentForm().functions.getObservables();.

如何等待这个过程,而不是在所有可观察值 returns 结果时才调用:this.current = nextForm;?

我的问题是:

我会将您的分叉流进一步传输到启动函数

public getObservables():Observable<[X,Y]>{
    return forkoin(awaitingObservers);
}

然后在您要处理的地方等待结果

函数开始(){

if (this.currentForm().functions) {
      this.currentForm().functions.iterate();
      this.currentForm().functions.getObservables().subscribe( data => this.current = nextForm)
    }
}

为什么我会那样做? "getObservables" 方法只是进行分叉的一种便捷方法。它不是数据的真正处理器。 结果的处理器在您的 "start" 函数中。而且我认为处理器应该始终负责触发订阅。 因此,我会在开始功能中进行订阅。

热烈的问候