我需要以x次拨打服务功能。我需要等待每个呼叫的响应,并对返回的数据进行一些验证。我以前曾经使用过switchmap,但这是我知道需要拨打多少个电话的时候,例如1:获取用户,2:获取userDetails。
,但是现在我不知道我需要打多少个电话,它的动态,可以是1次,它是10次。关于如何执行此操作的任何IDS?
嗨,谢谢你的示例。但是,如果我需要循环服务电话,我会从订阅中进行此操作吗?我需要在服务功能中使用observer.next吗?
我的服务功能看起来像这样:
getNavigation(tree: Navigation): Observable<Navigation[]> {
return this.partfinderService.getNavigation(tree.id);
}
这样称呼:
this.getNavigation(this.master)
.expand((data: Navigation[]) => {
return this.getNavigation(data[0]);
}).subscribe(context => contextData = context);
感觉就像您真正需要的是在Angular应用程序中添加NGRX Store支持。如果您有时间改进和重构,则可以从这里开始。
正如Supamiu所建议的那样,Expand会这样做,我在这里做了一个简单的stackblitz示例。
服务功能:
doSomething(context: any) {
return Observable.create(function (observer) {
setTimeout(() => {
observer.next(
{
run: context.run + 1,
value : context.value + '- Run ' + context.run
});
}, 1000);});
}
订阅:
this._testService.doSomething(this.context)
.pipe(
expand(context => {
return this._testService.doSomething(context)
// Condition of the last run
.pipe(filter(c => c.run <= 5));
})
).subscribe(context => this.context = context);