我有一个angular的service方法,它按如下方式调用HttpClient get方法
searchItem(name: string) {
const headers = await this.getHeaders();
return this.httpClient.get<Item[]>(environment.itemService + `items/searchByItem/${name}`, {headers: headers});
}
直到现在,我一直在不使用标头的情况下使用它,在组件中,我订阅了每个这样的方法。
现在,我必须调用此getHeaders()
async
方法作为标头,并在调用API之前进行设置。
因此,问题在于第一行返回promise
,第二行返回Observable
。像以前一样,如何获取标头,调用API并返回Observable作为此searchItem
的最终结果?
答案 0 :(得分:1)
await仅在异步功能中有效。 'await'表达式仅在异步函数内以及模块的顶层被允许。您需要在函数定义之前使用async
。
async searchItem(name: string) {
const headers = await this.getHeaders();
return this.httpClient.get<Item[]>(environment.itemService + `items/searchByItem/${name}`, {headers: headers});
}
或等待使用以下then
方法的诺言来完成询问。
searchItem(name: string) {
return this.getHeaders().then(headersVal => {
return this.httpClient.get<Item[]>(environment.itemService + items/searchByItem/${name}`, {headers: headersVal});
});
}