【问题标题】:How to get data and call api based on another api call's data如何获取数据并根据另一个 api 调用的数据调用 api
【发布时间】:2019-01-15 04:09:47
【问题描述】:

我正在尝试调用 api,如果返回任何数据,那么我必须显示该数据,否则我将调用另一个 api 来获取数据。

我有向我获取数据的服务。如果有任何数据,那么我将使用该数据来呈现 html 文件。但是,如果没有数据,那么我必须调用另一个 API 来获取数据。

我在构造函数中调用下面的函数。

this.availableDetailsArray = this.getConstactListBySabhaID(this.route.snapshot.params['id']);

上面的代码调用了这个函数。

getAvailableSabhaAttendance(id) {
this.contactService.getAttendanceIfAvailable(id).subscribe(data => {
  let temp = [];
  temp = data.data;
  this.availableSabhaDetails = temp;
 console.log(this.availableSabhaDetails);
});
return this.availableSabhaDetails

}

如果上面的 api 中有数据,那我很好。但是,我无法获取此数据来调用另一个 api。

第二个函数返回这个:

{id: 12, topic_name: "Nishtha", sabha_id: 8, sabha_child_id: 1, speaker_name1: 56, …}
absent_contact: "129"
attendance_id: 10
created_at: "2018-12-27 22:13:31"
id: 12
present_contact: "55,118,122,126,116,58,125,119,132"
sabha_child_id: 1
sabha_date_time: "2018/12/18 - 13:45"
sabha_details: "Video Darshan"
sabha_id: 8
speaker_name1: 56
speaker_name2: 18
topic_name: "Nishtha"
updated_at: "2019-01-13 14:50:42"
__proto__: Object

【问题讨论】:

  • this.contactService.getAttendanceIfAvailable(id).subscribe(data => { // 这里为什么不检查数据是否为空并调用第二个 API });

标签: angular angular4-httpclient


【解决方案1】:

getAvailableSabhaAttendance方法中:

  1. 您已经有一个块(命名数据)来处理返回的数据,您可以再包含 2 个块
  2. 错误块(下面命名为 errr):它可以处理从服务方法返回的错误,如果您愿意,可以调用您的“第二个函数”
  3. finally 块,(写成 () => {} 下面):您可以在这里验证您在第一个块中收到的数据,如果出现验证问题,您可以调用您的“第二个函数” '

    getAvailableSabhaAttendance(id) {
      this.contactService.getAttendanceIfAvailable(id).subscribe(
        data => {
          let temp = [];
          temp = data.data;
          this.availableSabhaDetails = temp;
          console.log(this.availableSabhaDetails);
        }
        ,errr => { /* This is the case of error, you can call the 2nd API here  */}
        ,() => {
          /* This is the case of finally, you can validate the data here and if the validations fail, call the 2nd API here  */
        }
      );
      return this.availableSabhaDetails;
    }

【讨论】:

  • 但是即使第一个api中没有数据,它也不会向我返回错误。那么我如何在不确认第一次调用的数据的情况下调用第二个 api
  • 如果您没有收到错误(errr 块不会触发)并且如果您从第一个 API 获得空白数据(数据块将触发)并且您可以立即调用数据块中的第二个 API还有
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2023-01-13
  • 2022-07-15
  • 1970-01-01
相关资源
最近更新 更多