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();
}