gpt4 book ai didi

javascript - 如何使用 Angular 在 rxJs 订阅和映射中链接 API 调用?

转载 作者:行者123 更新时间:2023-12-02 23:47:44 25 4
gpt4 key购买 nike

我正在执行多个 API 调用。第一个创建用户,第二个创建团队。

用户创建返回一个UserId,然后将其用作团队创建的一部分。

我将 rxjs 库与 Angular 结合使用,使用 .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 时,它应该会到达我的端点,并且在 postman 上测试时,我用它发送的正文在 URL 上成功,我不确定为什么调用不正确正在发送。

在我看来,它应该进行第二次 API 调用。

我尝试过使用 .pipe,然后使用 .map,但这也不起作用。

调试代码时,它会导航两次调用,第二个 .map(result => result) 包含从 response => 响应 返回的相同 ID。

这让我觉得在取消订阅之前我只能进行一次 API 调用,任何人都可以澄清这一点。

最佳答案

第二个流未被订阅。

使用当前的 RxJS 语法,它应该看起来或多或少像这样

this.http.post(/* args here */)
.pipe(
switchMap(result => {
/* do something with result */
return this.http.post(/* args here */)
})
).subscribe( /* subscriber here */)

关于javascript - 如何使用 Angular 在 rxJs 订阅和映射中链接 API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55778102/

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