下午好!
我目前正在开发中Angular2 / 4的web应用程序和我有观测量的一个问题。 我们的目标是,一个组件内,调用一个函数,当该功能完成后,我想执行一些代码。 因此,在“myComp.component.ts”文件中的代码是:
this.myService.myFunc1().subscribe(() => {
// this code has to be executed after myFunc1() finishes.
});
问题是“myService.service.ts”文件“myFunc1()”函数内。 这个函数的结构如下:
- 定义该函数,它返回一个
Observable<Status>
,其中状态对象就是{ status: 'ok' }
- 从另一个调用服务,它返回一个可观测的功能“myfunc2所()”,并做了一些工作人员。
- 从另一个调用服务,它返回一个可观察并具有后“myfunc2所()”结束要执行的功能“myFunc3()”。
- 从另一个调用服务,它返回一个可观察并具有后“myFunc3()”结束要执行的功能“myFunc4()”。
- 返回
{ status: 'ok' }
进入“myComp.component.ts”,以便在其他代码的订阅()时要执行的内部。
所以,我需要的是(3)的一些功能嵌套调用,以一前一后地执行他们的每一个。 最简单的方法是下面给出:
myFunc1(): Observable<Status> {
// some code and then call of myFunc2()
this.myService2.myFunc2().subscribe(data => {
// do some staff here and then call of myFunc3()
this.myService3.myFunc3().subscribe(data2 => {
// do some other staff and then call of myFunc4()
this.myService4.myFunc4().subscribe(data3 => {
// do staff and then return program flow into the Component
return Observable.of<Status>({status: 'ok'});
});
});
});
}
但当然return Observable.of<Status>({status: 'ok'});
不工作。 我一直在寻找在互联网和其他#1问题的解决方案,我发现像使用flatMap(),mergeMap(),switchMap()等的建议,我认为这些解决方案无法在我的情况下使用,因为每个功能都有在另一个之后被执行。
我能做什么? 我怀念的是什么? 预先感谢您的帮助和您的时间!