node.js - Angular : Receive responses in order with the calls

标签 node.js angular rxjs observable subject

嗨,我对 Angular 和 Observables 还很陌生

我正在尝试通过循环通过对象的 ID 获取对象。 但没有按顺序收到我的回复。

示例

get ID(1)
get ID(2)
get ID(3)
Receive Object ID(2)
Receive Object ID(3)
Receive Object ID(1)

是否可以让我的对象恢复正常? 下面是我多次调用我的服务函数的地方:

conferences-attendance.component.ts

  ExportExcelAttendance() {
    for (var i = 0; i < this.contactsAttendance.length; i++) {
      this.practiceService.GetPracticebyDBID(this.contactsAttendance[i].practiceId)
        .subscribe(
        (practice: Practice) => {
          this.practicesAttendance.push(practice);
          if (this.practicesAttendance.length == this.contactsAttendance.length) {
            this.ExportExcelAttendance2();
          }
        },
        error => this.errorMessage = <any>error
        );
    }
  }

这是我的服务中的函数,我在其中接收数据(不按调用顺序)。

practices.service.ts

    GetPracticebyDBID(id: string) {
        let params: URLSearchParams = new URLSearchParams();
        params.set('thisId', id);
        let requestOptions = new RequestOptions();
        requestOptions.params = params;
        return this.http.get('http://ec2-34-231-196-71.compute-1.amazonaws.com/getpractice', requestOptions)
            .map((response: Response) => {
                return response.json().obj;
            })
            .catch((error: Response) => Observable.throw(error.json()));
    }

最佳答案

forkJoin 为您提供了更少的代码,

const arrayOfFetches = this.contactsAttendance
  .map(attendee => this.practiceService.GetPracticebyDBID(attendee.practiceId) );

Observable.forkJoin(...arrayOfFetches)
  .subscribe((practices: Practice[]) => {
      this.practicesAttendance = practices;
      this.ExportExcelAttendance2();
  });

编辑 折断! @Anas 打败了我。虽然,我认为你不需要 concatAll()

关于node.js - Angular : Receive responses in order with the calls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613388/

相关文章:

javascript - 如何使用 Angular 2(测试版和更新版本)加载 RxJS(和 zone.js/reflect-metadata)?

javascript - Node.js express-generator - 由于 TypeError : app. set is not a function,应用程序无法运行

javascript - RegEx JS - 如何获取 : and defore/or end of a string 之后的所有内容

node.js - npm登录travis后没有api key

css - 网格样式 - 覆盖 ag-grid 的样式

Angular Modal 并不总是正确显示

angular - 在重试 Observable 之前更改 HTTP header

javascript - RXJS 如何将 Observable<T[]> 转换为 Observable<T>

node.js - 在 typescript 中使用 allowJs = true 时在 node_modules 中缺少 ./lib 文件

angular - Compodocs + Storybook + Angular 9 中的空文档.json