gpt4 book ai didi

angular - 结合两个可观察量然后转换结果

转载 作者:可可西里 更新时间:2023-11-01 16:31:53 28 4
gpt4 key购买 nike

我有一个使用 Angular Http 调用的 REST 端点。我需要链接两个调用,然后使用每个调用的结果创建一个要返回的对象。

伪代码:

  • POST 新实体到服务器并取回 UID
  • PATCH 实体内容到服务器,使用返回的 UID
  • 创建一个结合了实体内容和UID的对象
  • 返回对象给调用者(订阅)

我以为这样就可以了,但是我得到了一个错误;

addClient(clientData) {
let clientUid;
return this.http.post(`/clients`, clientData)
.flatMap((newClient:any) => {
clientUid = newClient.name;
return this.http.patch(`/spec/${clientUid}`, clientData)
.flatMap((updatedClient:any)=> {
return {
uid: clientUid,
...updatedClient,
}
})
});
}
//consume
this.clientService.addClient(clientData)
.subscribe((response:any) =>{ }

TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

我怎样才能:

  • 修复错误并让 addClient 返回我想要的对象?
  • 此外,有没有一种方法可以在最终的 flatMap 中使用 UID 而无需设置局部变量 (clientUid)?

最佳答案

.flatMap 函数期望您返回一个Observable,但实际上您返回的是一个对象。

如果你想转换值,你应该使用 .map

关于使用 clientUuid,看到你的 map 是从原始 flatMap 中调用的,你应该能够使用 newClient.name

关于angular - 结合两个可观察量然后转换结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51918379/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com