代码之家  ›  专栏  ›  技术社区  ›  anderlaini

typescript-async方法返回的是observate,而不是它的最终数据

  •  0
  • anderlaini  · 技术社区  · 5 年前

    我是打字新手,有一些难以理解的异步概念。

    我的 page.ts 文件

    myfunction(){
      this.myService.callApiMethod().then((data) => {
        console.log(data);  <<<<<<<====== I WANT HTTP DATA HERE
      });
    }
    

    我的 service 文件

    async callApiMethod(setupData){
    
      return this.http.post(this.env.API_URL+'/endpoint', data).pipe(
        tap(response => {
          return response;
        })
      );
    
    }
    

    所以 console.log(data); 正在显示:

    Observable {_isScalar: false, source: Observable, operator: DoOperator}
    

    如何让它获取http响应数据?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Michael Hilus    5 年前

    你可以退一个 Promise 从您的服务:

    async callApiMethod(setupData){
      return this.http.post(this.env.API_URL+'/endpoint', data).toPromise();
    }
    

    然后获取如下数据:

    async myfunction() {
      const data = await this.myService.callApiMethod();
    }
    

    对于我自己来说,我从使用承诺转向了角度观测,因为它们更适合角度环境。