如果在角度中调用两次,如何等待相同的observable完成?

Wae*_*ael 1 rxjs angular

我的问题与如何"如何等待观察完成"不一样.我已经使用switchMap在我的代码中解决了这个问题.目前我有一个api get调用,在执行httpget之前,它将检查refreshToken是否已过期,在这种情况下,它将生成一个新令牌并等待它,然后执行httpget,这很棒.

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

this.getUsers();
this.getLocations();
Run Code Online (Sandbox Code Playgroud)

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

d33*_*337 8

您在此方案中使用的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