我的问题与如何"如何等待观察完成"不一样.我已经使用switchMap在我的代码中解决了这个问题.目前我有一个api get调用,在执行httpget之前,它将检查refreshToken是否已过期,在这种情况下,它将生成一个新令牌并等待它,然后执行httpget,这很棒.
我的问题是,如果我有以下senario:
this.getUsers();
this.getLocations();
Run Code Online (Sandbox Code Playgroud)
让我们来看一下令牌需要刷新的情况(我们需要等待刷新):首先我们调用this.getUsers()这将触发创建一个新令牌,并且在创建令牌后将获得get用户.同时我们也调用this.getLocations(),它也会触发创建一个新的令牌,并且不会在第一次完成时等待.我需要找到一种方法,以便第二次获得等待第一次完成,以便两者将使用相同的新令牌.
您在此方案中使用的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)
);
Run Code Online (Sandbox Code Playgroud)
请参阅此示例:stackoverflow示例
另请参阅此内容以利用Angular中的Observable:利用Observable