Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript http toPromise返回一个对象_Javascript_Angular_Typescript_Promise_Rxjs - Fatal编程技术网

Javascript http toPromise返回一个对象

Javascript http toPromise返回一个对象,javascript,angular,typescript,promise,rxjs,Javascript,Angular,Typescript,Promise,Rxjs,我有以下功能: getUser(userId: string) : Observable<any> { var getUserURL = `/api/users/${userId}`, getUserStatus = this.getUserStatus(); return this.http.get<any>(getUserURL).pipe( catchError(this.handleError('getUser -

我有以下功能:

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))
    );
  }
getUser(userId:string):可观察{
var getUserURL=`/api/users/${userId}`,
getUserStatus=this.getUserStatus();
返回这个.http.get(getUserURL).pipe(
catchError(this.handleError('getUser-Get User failed',null))
);
}
这将从REST API对此URL的响应中返回数据
/API/users/${userId}
,以进行toPromise

是否有任何方法可以返回包含restapi+本地数据(getUserStatus)的响应数据的对象,在本例中是布尔值。
谢谢

除非您的示例中没有包含承诺,否则您的请求不会返回承诺。你有一个可观察的目标

假设我正确地理解你的问题。如果要返回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))
    );
}

就像@mtputlz说的,你返回的是一个可观察的。如果你想返回你的回复,在你的例子中是一个布尔值。然后我们可以将不可履行的内容转化为承诺:

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();
  }
async getUser(userId:string):任意{
var getUserURL=`/api/users/${userId}`,
getUserStatus=this.getUserStatus();
return等待this.http.get(getUserURL.pipe)(
catchError(this.handleError('getUser-Get User failed',null))
).toPromise();
}

你能解释一下为什么你需要它是一个
承诺
而不是一个
可观察的
?您打算如何使用响应?问题似乎是如何在订阅后将数据附加到
Observable
并返回
restapi+本地数据(getUserStatus)
。类似的,这太棒了@kim。如果StackOverflow上的解决方案正确,您可以使用复选标记将is标记为所选答案。
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();
  }