Angular 4循环服务功能,并在每个呼叫上等待响应



我需要以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);

最新更新