我有以下功能:
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),这是布尔在这种情况下,响应数据的对象。谢谢
您的请求没有返回一个承诺,除非它是不是在你的例子包括在内。你有可观察到的。
假设我正确理解你的问题。如果你想返回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);
});
就像@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();
}