我有一些可观察的功能:
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;
答案 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函数中进行订阅。
热烈的问候