【问题标题】:How can I return the data from AxiosResponse?如何从 AxiosResponse 返回数据?
【发布时间】:2021-08-31 17:53:41
【问题描述】:

我是 NestJS 的新手,我正在尝试使用包含 axiosHttpModule。我遇到的问题是我不知道如何从响应中返回数据。我得到了一些Subscription 对象。现在我只能把它变成这样的 console.log:

this.httpService
      .get('https://api.chucknorris.io/jokes/random')
      .subscribe((e) => console.log(e.data));

这很好用,但是当我尝试返回数据时,它会返回 Subscriber 对象。

this.httpService
      .get('https://api.chucknorris.io/jokes/random')
      .subscribe((e) => e.data);

谁能告诉我我做错了什么?谢谢。

【问题讨论】:

  • 查看 Observables。如果有帮助,在这种情况下,它们的工作方式有点像 Promise,因此您不能只将 subscribe 的结果分配给某些东西。它是异步的。
  • 是的,它返回一个 Promise,但在解析时它返回相同的对象。我只能在subscribe函数中console.log。

标签: typescript axios nestjs


【解决方案1】:

您可以使用 Michal 提供的答案,也可以返回 observables 并使用它们(因为 Nest 稍后会处理订阅)。返回 observable 看起来像这样:

return this.httpService
  .get('https://api.chucknorris.io/jokes/random')
  .pipe(
    map((res) => res.data)
  );

这两种方法都可以正常工作。这仅取决于您对 RxJS 的熟悉程度

【讨论】:

    【解决方案2】:

    我是这样解决的:

    const res = this.httpService
          .get('https://api.chucknorris.io/jokes/random')
          .toPromise()
        
    console.log(res.data)
    
    

    【讨论】:

    • toPromise 已被弃用,您可以参考 rxjs 文档...
    猜你喜欢
    • 2012-02-29
    • 2015-02-20
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多