我正在执行多个API调用。一个创建用户,第二个创建团队。
用户创建返回一个UserId
,然后将其用作团队创建的一部分。
我在Angular中使用rxjs库,使用.map和.subscribe方法等到第一个调用解决后,再将UserId传递给第二个api调用。
第一个呼叫正在解决并返回我需要的UserId
,但是第二个甚至没有发送。
this.http.post<number>(this.baseUrl + 'api/register/', UserTeam, {
headers: new HttpHeaders({
"Content-Type": "application/json"
})
})
.map(response => response)
.subscribe(result =>
//result = the new user id from registering new user
{
var newTeam = JSON.parse(UserTeam);
newTeam.userId = result;
newTeam = JSON.stringify(newTeam);
this.http.post(this.baseUrl + 'api/team/', newTeam, {
headers: new HttpHeaders({
"Content-Type": "application/json"
})
}).map(result => result)
})
我已经调试了,并且在构建URL时,它应该到达了端点,并且当我在邮递员上测试该URL时,与我一起发送的正文成功了,我不确定该调用为何t发送。
在我看来,它应该进行第二次API调用。
我尝试先使用.pipe
,然后再使用.map
,但这也不起作用。
调试代码时,它会在两个调用之间导航,第二个.map(result => result)
包含从response => response
返回的相同ID。
这使我认为我只能在取消订阅之前进行一次API调用,任何人都可以对此进行澄清。
答案 0 :(得分:1)
第二个流没有被订阅。
使用当前的RxJS语法,它看起来应该或多或少像这样
this.http.post(/* args here */)
.pipe(
switchMap(result => {
/* do something with result */
return this.http.post(/* args here */)
})
).subscribe( /* subscriber here */)