当在Angular中串联多个HttpClient调用时,为什么concat RxJS运算符会发出Observable而不是值

Ryanmcfall

我试图发出多个HTTP请求以响应单击“全部更新”按钮。我的代码如下所示:

let new_items:Observable<ApiResponse<ShoppingListItem>>[] = this.items
      .map(item => new ShoppingListItem(...))
      .map(item => this.shoppingListService.updateItem(item));


concat(new_items).subscribe(
  r => console.log(r);
);

this.shoppingListService.updateItem返回通过调用生成的Observable httpClient.put

运行此代码时,我希望看到的console.log(r)是由该updateItem方法生成的类型所打印的值相反,这是一个可观察的。我的服务器日志表明没有发出HTTP请求。这似乎表明它尚未订阅。我对concat文档的理解是,concat在Observable完成之前传递给每个传递给Observable的个体

如果我更换concatforkJoin我得到的结果,我期待。我并不特别在意订单,因此我可以很好地使用它,forkJoin但是我想了解为什么使用concat不起作用。

马丁

您所看到的有些混乱,但这是concat()and的预期行为forkJoin()

forkJoin() 将Observables数组和扩展的Observables都用作单独的参数:

forkJoin(obs1, obs2, obs3)
// or
forkJoin([obs1, obs2, obs3])

但是concat不同。它仅期望将源Observables(或ObservableInput)作为单个参数,如下所示:

concat(obs1, obs2, obs3)

但是,如果传递像concat([obs1, obs2, obs3])这样的数组,则它将该数组作为ObservableInput并仅迭代其项,这不是您想要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果订阅了操作符返回的 observable,为什么原始 observable 会发出值?

来自分类Dev

为什么rxjs ajax运算符返回一个Observable?

来自分类Dev

为什么按值而不是引用返回时不能调用运算符?

来自分类Dev

Rxjs筛选器运算符不适用于Angular2 Observable

来自分类Dev

IntelliJ IDEA在rxjs5中找不到Observable的运算符

来自分类Dev

为什么重载的移动赋值运算符返回左值引用而不是右值引用?

来自分类Dev

为什么加号运算符在Julia中是矢量化的,而不是除法运算符?

来自分类Dev

为什么`std :: string`的赋值运算符将`char`按值而不是`const`引用?

来自分类Dev

为什么scheme中的`and`运算符不是内置过程

来自分类Dev

为什么<< ofstream中的运算符不是const?

来自分类Dev

在MATCH中不是运算符

来自分类Dev

使用代理时,运算符的Rxjs不发出值

来自分类Dev

OCaml:为什么比较运算符是类型无关的,而算术运算符不是?

来自分类Dev

为什么map.find使用<运算符而不是==运算符?

来自分类Dev

为什么运算符过载而不是运算符覆盖?

来自分类Dev

为什么选择二元运算符而不是一元运算符?

来自分类Dev

无法在 Kotlin Android 中对 Observable 调用 from() 运算符

来自分类Dev

对多个值使用运算符+ =

来自分类Dev

C ++移动语义:为什么调用复制分配运算符=(&)而不是移动分配运算符=(&&)?

来自分类Dev

C ++移动语义:为什么调用复制分配运算符=(&)而不是移动分配运算符=(&&)?

来自分类Dev

为什么在scala中向后使用concat运算符?

来自分类Dev

为什么在 HttpClient 响应 observable 上使用扩展运算符?

来自分类Dev

RxJs:可以将运算符作为参数传播到管道运算符中吗

来自分类Dev

为什么 '?' 运算符使用From而不是Into?

来自分类Dev

在SAS中,“不是=”不是合法运算符?

来自分类Dev

带有ajax调用的RxJS重试运算符

来自分类Dev

如何使用RxJs运算符进行递归HTTP调用?

来自分类Dev

如何从嵌套的rxjs运算符返回多个操作

来自分类Dev

如何使用RxJS运算符避免多个嵌套订阅?

Related 相关文章

  1. 1

    如果订阅了操作符返回的 observable,为什么原始 observable 会发出值?

  2. 2

    为什么rxjs ajax运算符返回一个Observable?

  3. 3

    为什么按值而不是引用返回时不能调用运算符?

  4. 4

    Rxjs筛选器运算符不适用于Angular2 Observable

  5. 5

    IntelliJ IDEA在rxjs5中找不到Observable的运算符

  6. 6

    为什么重载的移动赋值运算符返回左值引用而不是右值引用?

  7. 7

    为什么加号运算符在Julia中是矢量化的,而不是除法运算符?

  8. 8

    为什么`std :: string`的赋值运算符将`char`按值而不是`const`引用?

  9. 9

    为什么scheme中的`and`运算符不是内置过程

  10. 10

    为什么<< ofstream中的运算符不是const?

  11. 11

    在MATCH中不是运算符

  12. 12

    使用代理时,运算符的Rxjs不发出值

  13. 13

    OCaml:为什么比较运算符是类型无关的,而算术运算符不是?

  14. 14

    为什么map.find使用<运算符而不是==运算符?

  15. 15

    为什么运算符过载而不是运算符覆盖?

  16. 16

    为什么选择二元运算符而不是一元运算符?

  17. 17

    无法在 Kotlin Android 中对 Observable 调用 from() 运算符

  18. 18

    对多个值使用运算符+ =

  19. 19

    C ++移动语义:为什么调用复制分配运算符=(&)而不是移动分配运算符=(&&)?

  20. 20

    C ++移动语义:为什么调用复制分配运算符=(&)而不是移动分配运算符=(&&)?

  21. 21

    为什么在scala中向后使用concat运算符?

  22. 22

    为什么在 HttpClient 响应 observable 上使用扩展运算符?

  23. 23

    RxJs:可以将运算符作为参数传播到管道运算符中吗

  24. 24

    为什么 '?' 运算符使用From而不是Into?

  25. 25

    在SAS中,“不是=”不是合法运算符?

  26. 26

    带有ajax调用的RxJS重试运算符

  27. 27

    如何使用RxJs运算符进行递归HTTP调用?

  28. 28

    如何从嵌套的rxjs运算符返回多个操作

  29. 29

    如何使用RxJS运算符避免多个嵌套订阅?

热门标签

归档