HTTP toPromise返回一个对象

问题描述 投票:1回答:2

我有以下功能:

getUser(userId: string) : Observable<any> {
    var getUserURL = `/api/users/${userId}`,
        getUserStatus = this.getUserStatus();


    return this.http.get<any>(getUserURL).pipe(
      catchError(this.handleError('getUser - Get User failed', null))
    );
  }

这从REST API响应此URL /api/users/${userId}到toPromise返回数据

有没有什么办法,我可以返回,其中包括来自REST API +本地数据(getUserStatus),这是布尔在这种情况下,响应数据的对象。谢谢

javascript angular typescript promise rxjs
2个回答
2
投票

您的请求没有返回一个承诺,除非它是不是在你的例子包括在内。你有可观察到的。

假设我正确理解你的问题。如果你想返回HTTP响应+当地的地位,你会做这样的事情使用管道运营商:

服务

getUser(userId: string) : Observable<any> {
  const path = `/api/users/${userId}`
  const userStatus = this.getUserStatus();

  return this.http.get<any>(path)
    .pipe(
      map((response: any) => {
        return { response, userStatus };
      }),
      catchError(this.handleError('[USER]::getUser Failed', null))
    );
}

零件

this.getUser(1000).subscribe(({response, userStatus}) => { 
  // Handle response and status
  console.log('RESPONSE', response);
  console.log('USER_STATUS', userStatus);
});

1
投票

就像@mtputlz说你回可观察到的。如果你想回到你的效应初探这是你的情况是布尔值。然后,我们可以将obserable转换为一个承诺:

async getUser(userId: string) : any {
    var getUserURL = `/api/users/${userId}`,
        getUserStatus = this.getUserStatus();


    return await this.http.get<any>(getUserURL).pipe(
      catchError(this.handleError('getUser - Get User failed', null))
    ).toPromise();
  }
© www.soinside.com 2019 - 2024. All rights reserved.