gpt4 book ai didi

angular - 如果以 Angular 调用两次,如何等待相同的可观察对象完成?

转载 作者:行者123 更新时间:2023-12-05 08:53:22 25 4
gpt4 key购买 nike

我的问题与如何“如何等待 observable 完成”不同。我已经使用 switchMap 在我的代码中解决了这个问题。目前我有一个 api get 调用,在执行 httpget 之前,它会检查 refreshToken 是否过期,在这种情况下,它会生成一个新 token 并等待它,然后执行很棒的 httpget。

我的问题是,如果我有以下情况:

this.getUsers();
this.getLocations();

让我们以 token 需要刷新的情况为例(我们需要等待刷新):首先我们调用 this.getUsers() 这将触发创建一个新 token 并且获取用户将在创建 token 后发生。同时,我们还调用 this.getLocations() ,它也将触发创建一个新 token ,并且不会等待第一个 get 完成。我需要找到一种方法,让第二个 get 等待第一个 get 完成,以便两者都使用相同的新 token 。

最佳答案

您在此场景中使用的 rxjs 运算符是 forkJoin()

Observable.forkJoin(
this.http.get('/app/getUser').map((res: Response) => res.json()),
this.http.get('/app/getLocation').map((res: Response) => res.json())
).subscribe(
data => {
this.users = data[0]
this.locations = data[1]
},
err => console.error(err)
);

请参阅此示例:Example of stackoverflow

另请参阅此以利用 Angular 中的 Observable:Take Advantage of Observable

关于angular - 如果以 Angular 调用两次,如何等待相同的可观察对象完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53863111/

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