【问题标题】:Awaiting for two methods that return observables in angular等待两种以角度返回可观察对象的方法
【发布时间】:2019-12-05 01:04:39
【问题描述】:

我有两种方法可以调用 api 并返回 observables。

private method1(): Observable<Home> {
  return homeService.call.get();
}

private method2(): Observable<User> {
  return userService.call.get();
}

那我有以下两种方法:

private method3(): void {
  this.method1().subscribe();
  this.method2().subscribe();
}

最后一个

private method4(): void {
 // does things
 this.method3();
}

我希望method4 等待method3 完成所有请求才能继续,但我不知道如何在 Angular 8 中实现它。有什么提示吗?

【问题讨论】:

  • 在 RxJS 的 forkJoin ~operator~ 的帮助下(不是操作员,sry)。您的 method3 应该返回组合的 observables。很确定你可以通过谷歌搜索找到一些特定于 Angular 的示例
  • @webdevius 谢谢,我去看看
  • 你可以看看这个:) 我回答了一个类似于stackoverflow.com/questions/57178820/…的问题
  • 我知道这已经被标记为已回答,但我这里有一个示例供参考:stackblitz.com/edit/angular-todos-deborahk

标签: angular rxjs angular8 rxjs-observables


【解决方案1】:

您可能正在查看一个名为 flattening observables 的术语 - 具有嵌套的 observables。 (除非你只关心最终回复 - forkJoin

您有各种各样的运算符可以帮助您实现所需。这里只是其中的一部分。看一看,你会发现它们中的哪一个最适合你的代码。

switchMap - 具有取消效果。

mergeMap - "当您希望展平内部 observable 但又想手动控制内部订阅数量时,最好使用此运算符。"

forkJoin - "当你有一组可观察对象并且只关心每个对象的最终发射值时,最好使用此运算符。"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2019-04-27
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多