我的问题与如何“如何等待 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/