我有一个Angular Http调用的REST端点。 我需要链接两个调用,然后使用每个调用的结果来创建要返回的对象。
伪代码:
我以为这样做会成功,但是出现错误;
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:您提供了一个无效对象,该对象应用于流。您可以提供一个Observable,Promise,Array或Iterable。
我如何:
答案 0 :(得分:1)
.flatMap
函数期望您返回一个Observable
,但是实际上您正在返回一个对象。
如果要转换值,则应使用.map
关于使用clientUuid
,看到您的map
是在原始flatMap
中被调用的,那么您应该只能使用newClient.name
答案 1 :(得分:1)
有一些错误+您的代码可以改进。
flatmap
通话。flatmap
。您需要的是map
我已经为您的问题创建了一个演示-https://stackblitz.com/edit/so-rxjs。