等待返回Angular HttpClient中的可观察对象

时间:2020-07-05 17:09:37

标签: angular promise async-await observable angular-httpclient

我有一个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的最终结果?

1 个答案:

答案 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});
  });   
}