首页 > 解决方案 > 将服务中方法的返回值传递给另一个方法

问题描述

我有一个连接到 2 个不同 API 端点的服务,这个服务获取用户的 id 和一个 JWT 令牌:

@Injectable()
 export class UserService {

  appLogin = 'http://url.for.the.login.api';
  //returns id and token
  userData = 'http://url.for.the.user_info.api';
  //returns user info

  constructor(private http: HttpClient) { }

  getAll() {
    return this.http.get<User[]>(`${this.appLogin}`);
    //gets id and token, can display values in the template like this {{currentUser.id}}
  }

 }

然后我需要另一个方法使用 id 和返回的令牌来使用这些值来发出另一个GET请求,如下所示: http://url.for.the.user_info.api/userID?token=token_string

我有这个:

 getInfo(id: number, token: string) {

    let userData = this.http.get<User[]>(`${this.appLogin}` + id + '?token=' + token);
    return this.http.get<User[]>(`${userData}`);
}

但是我迷路了,谢谢你的帮助。

标签: angulartypescript

解决方案


您可以使用该switchMap功能,如下所示:

return this.http.get<User[]>(`${this.appLogin}` + id + '?token=' + token)
    .pipe(switchMap(userData) => this.http.get<User[]>(`${userData}`))

您可能需要添加以下导入语句switchMap

import { switchMap } from 'rxjs/operators';

通过管道传递原始请求switchMap,我们可以创建一个新的Observable


推荐阅读