javascript - 如何在 Angular 6 中处理多个 http 请求

标签 javascript angular typescript rxjs observable

我有一个函数尝试将 3 个请求链接在一起,如下所示:

showProfileDetails() {
  this.getUserInfo(this.currentUser.id).pipe(
    mergeMap(e =>
      this.getAccounts(this.currentUser.id)
    ),
    mergeMap(e =>
      this.getPayments(this.currentUser.id)
    )
  ).subscribe(data =>
    console.log('first attempt on observables: ', data)
  )
}

我想要做的是同步检索每次调用的数据并将其存储在一个变量中,以便我可以在 DOM 中渲染数据。

但是我得到的只是上次调用的数据,顺便说一句,该调用返回一个错误,如何在不停止此进程的情况下处理此错误?提前致谢,我是 Angular 的新手。

最佳答案

您可以使用 forkjoin 来处理多个 http 请求,就像使用 RxJs 一样:

import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/forkJoin';

getVehicles(): Observable<any> {
  const user = this.http.get(USER_ENDPOINT).map(res => res.json());
  const account = this.http.get(ACCOUNT_ENDPOINT).map(res => res.json());
  const payment = this.http.get(PAYMENT_ENDPOINT).map(res => res.json());

  return Observable.forkJoin([user, account, payment])
     .map(responses => {
        // responses[0] => user
        // responses[1] => account
        // responses[2] => payment
     });
}

关于javascript - 如何在 Angular 6 中处理多个 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738353/

相关文章:

javascript - 将第一个元素移动到数组末尾的最快方法

滚动到输入 ID 的 JavaScript 搜索栏

javascript - 我怎样才能让我的动画也朝另一个方向工作?

typescript - 无法在本地测试云功能,模拟器无法启动并出现 TypeError : _onRequestWithOpts is not a function

Javascript 将冒号附加到未知长度的数字上?

javascript - 使用 Angular 13 使用 js-xlsx 读取本地 Excel 文件?

angular - ng2-smart-table 与 SystemJS 兼容

javascript - TypeScript - 如果扩展其他内容,则类泛型类型太窄,如果不扩展任何内容则不是

javascript - 如何在 Typescript 中编写 Kotlinesque 扩展函数?

javascript - 如何使用 ReactJS 和 Typescript 定义组件实例属性? `Property ' var' 在类型 'App' ` 上不存在