Angular 2:两个后端服务调用第一个服务的成功

2023-11-30

在我的 Angular 2 应用程序中,我有如下后端服务。

getUserInterests() {
    return this.http.get('http://localhost:8080/test/selections').map((res: Response) => res.json());
}

调用此服务后,我想在前一个服务成功后调用另一项服务。

第二次服务

let params: URLSearchParams = new URLSearchParams();
    params.set('access_token', localStorage.getItem('access_token'));
    return this.http.get('http://localhost:8080/user/selections', { search: params }).map((res: Response) => res.json());

这两个服务分别返回两个 JSON 数组。然后我需要使用这两个数组进行一些登录。

EDITED

服务.ts

getUserInterests() {
    return this.http.get('http://localhost:8080/test/selections').map((res: Response) => res.json());
}

getSavedSelections() {
    let params: URLSearchParams = new URLSearchParams();
    params.set('access_token', localStorage.getItem('access_token'));
    return this.http.get('http://localhost:8080/interest/user/selections', { search: params }).map((res: Response) => res.json());
}

getSelectionList() {
    var obs = this.getUserInterests().flatMap(
        (interests) => {
            return Observable.forkJoin([
                Observable.of(interests),
                this.getSavedSelections()
            ]);
        }
    );
    return obs;
}

然后我在其他 ts 文件中使用以下内容来调用该服务。

export class InterestsComponent {
  private interests;
  private saved_interests;
  constructor(private dataService: DataService) {
    this.dataService.getSelectionList().subscribe(
        (result) => {
            var interests = result[0];
            var selections = result[1];
        }
    );
  }
}

但这在控制台日志上给出了以下错误。

ORIGINAL EXCEPTION: TypeError: this.dataService.getSelectionList is not a function

任何建议表示赞赏。


您需要利用flatMap操作员在前一个请求完成后调用一个请求:

this.service.getUserInterests().flatMap(
  (interests) => {
    let params: URLSearchParams = new URLSearchParams();
    params.set('access_token', localStorage.getItem('access_token'));
    return this.http.get('http://localhost:8080/user/selections', {
      search: params
    }).map((res: Response) => res.json());
  }
);

订阅该数据流时,您只会收到最后一次请求的结果。

你可以使用Observable.forkJoin方法返回两者。这是一个示例:

var obs = this.service.getUserInterests().flatMap(
  (interests) => {
    return Observable.forkJoin([
      Observable.of(interests),
      this.service.getUserSelections()
    ]);
  }
);

obs.subscribe(
  (result) => {
    var interests = result[0];
    var selections = result[1];
  }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2:两个后端服务调用第一个服务的成功 的相关文章

随机推荐

  • 使用DecimalFormat时如何防止负号?

    我正在使用一个库 它允许我使用 DecimalFormat 模式配置数字格式化方式 我需要删除减号以显示数字的绝对值 我尝试了 0 00 0 00 和 0 00 但没有成功 我可以选择任何减号 例如 0 00 0 00 但我不能根本没有符号
  • c 警告:在常量表达式中使用 const 变量在 C 中是非标准的

    当我尝试将数组初始化为常量大小时 我收到此警告 2170 D 在常量表达式中使用 const 变量在 C 中是非标准的 file h typedef struct LED Blink Pattern LEDSeq void addError
  • 确定哪些(如果有)PCI 设备插入主板 PCI(e) 插槽

    我正在用 C 编写一个程序来在许多 Windows XP 工作站上执行硬件审核 我需要确定哪些 PCI 设备是通过主板插槽连接的实际卡 而不是也使用 PCI 总线 内置于主板中 的板载设备 我可以使用各种 WMI 类成功列出使用所有 PCI
  • 当单元格具有特定值时触发电子邮件

    我是一名篮球教练 我正在创建一个仪表板来监控我的球员的社交媒体 我正在使用 IFTTT com 将所有玩家的推文实时提取到电子表格中 我正在尝试编写一个代码 如果我的一个玩家使用了不恰当的单词 它将触发该单元格向我发送的电子邮件 我觉得我走
  • 在 C# 中引用另一个字符串

    据我所知 C 中的字符串是引用类型 因此 在下面的代码中 a 应该等于 Hi 但它仍然保留其值 Hello 为什么 string a Hello string b a b Hi 许多答案指出字符串是不可变的 虽然这是事实 但这与你的问题完全
  • Java 布局不显示组件(有时)

    我正在为我的学生编写一个 MathQuiz 包括用于渲染的 JLatexMath 和用于蜂鸣器的 jinput 问题是 有时 就像每四次一样 当我启动程序时 没有任何组件可见 它们在调整 JFrame 大小后出现 首先 我想到了 jinpu
  • G Suite 中的 Google Takeout 从 Google 云存储下载

    我是一家非营利组织的 G Suite 管理员 刚刚发现了数据导出功能 这似乎就像个人帐户的外卖 导出文件已准备就绪 现在可以从 Google Cloud Platform Storage 中的存储桶下载 然而 有很多很多文件夹 并且尝试进出
  • 是否可以下载文件的特定部分? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 所以我想下载一个文件 但我不需要全部 我是否可以跳过文件的前 1 4 并下载其余部分 我已经尝试过 python youtube dl 包 有一些我认为可能有用的相关标志 但我不
  • 如何删除深度未知的深层嵌套字典中的空字段或 None 字段?

    我有一本深度嵌套字典的字典 我试图删除所有 None 或 的 k v 对 下面的字典d是输入的示例 d 1 1 1 a real value 1 2 2 None 3 3 1 3 2 None 通常 要删除字典中的空字段 命令 k v fo
  • 二维数组的运算符[][]重载

    是否可以超载 操作员两次 为了允许 像这样 function 3 3 就像二维数组一样 如果可能的话 我想看一些示例代码 你可以超载operator 返回一个可以使用的对象operator 再次得到结果 class ArrayOfArray
  • 处理java异常的最佳实践

    我开始学习 Java 并用 java 编写我的第一个实用程序类 这些类应该投入生产 当谈到处理异常时 我有点迷失 是否有关于给定代码行中有多少 try 语句的大概数字 有多少代码应该处理异常 Eclipse 的任何插件 最佳实践是在 try
  • 使用 VBA 循环记录集

    我正在尝试按以下方式以循环方式将销售人员 rsSalespeople 分配给客户 rsCustomers 导航到第一个客户 将第一个销售人员分配给该客户 移至下一个客户 如果 rsSalesPersons 不在 EOF 则移至下一个 Sal
  • Java 日期格式“2010-10-11T22:10:10.000Z”

    2010 10 11T22 10 10 000Z 是什么日期格式 那是一个ISO8601日期格式 如果您希望实际解析该格式的日期 您的问题并没有真正明确您的意图 请看看these other问题
  • 需要修改开发者账号中相同设备的UDID

    我已在开发者帐户中添加了大写 UDID 现在它不允许我更改它或通过单击 添加新 添加相同的小写 UDID 我想知道该特定设备是否仍然可以由任何人使用机会 或者我需要其他 UDID 来共享构建 快速答复表示赞赏 提前非常感谢 抱歉 不可能 一
  • 如何从字符串值 Swift 中删除可选

    我想使用不带可选扩展名的字符串值 我使用以下代码从 firebase 解析此数据 Database database reference withPath Locations child Cities observe value with
  • 如何检测 javascript 元素层次结构中的循环

    我有一个元素列表 每个元素都有一个 ID 和一个父 ID 我想要做的是检测这个 层次结构 中何时存在循环 并显示哪个 ID 启动循环 list id 1 parent 2 id 2 parent 3 id 3 parent 4 This i
  • Python 方法重写,签名重要吗?

    可以说我有 class Super def method1 pass class Sub Super def method1 param1 param2 param3 stuff 它是否正确 对method1的调用总是会转到子类吗 我的计划
  • 如何在 CSV 中指定关系类型?

    我有一个 CSV 文件 其中包含以下数据 ID Name Role Project 1 James Owner TST 2 Ed Assistant TST 3 Jack Manager TST 并希望创建与项目的关系在其中指定的人员 我尝
  • matlab代码变成了不可读的符号

    我在 Matlab 中遇到了一些错误 我的代码被转换成不可读的符号字符串 我 我怀疑这对 cs 人员来说是一个简单的问题 但我只是一个正在接受学术培训的代码 最终 用户 也就是说 不幸的是 我对理论知之甚少 而且很容易忘记 我按了 ctrl
  • Angular 2:两个后端服务调用第一个服务的成功

    在我的 Angular 2 应用程序中 我有如下后端服务 getUserInterests return this http get http localhost 8080 test selections map res Response