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

时间:2018-07-04 17:40:11

标签: angular typescript2.0 angular6

我有一些可观察的功能:

function a(): Observable<any> {
}

function b(): Observable<any> {
}

在我将这些可观察对象加入一个之后:

   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();

如何等待此过程并且在所有可观察对象返回结果时不这样做,然后才调用:this.current = nextForm;

我的问题是:

  • 如果存在可观测对象列表,请调用它们,然后执行以下行:this.current = nextForm;

1 个答案:

答案 0 :(得分:1)

我会将分叉的流进一步传输到启动功能

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

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

function start(){

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

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

热烈的问候