【问题标题】:How to wrap async/await in Typescript without errors and warning如何在 Typescript 中包装 async/await 而不会出现错误和警告
【发布时间】:2019-04-27 23:46:32
【问题描述】:

我有一个 fetch 调用当然是异步的,但我喜欢将所有这些都包装在一个或多个函数中,因此调用函数不会打扰。

这就是我现在拥有的:

private async wrapFetch(url): Promise<void> {
    this.responseText = await this.doFetch(url);
}

private async doFetch(url): Promise<string> {
   return fetch(url)
      .then((rsp: response) => {
          return rsp.text();
      });
}

现在,我想像调用普通异步函数一样调用 wrapFetch

this.wrapFetch('some-url');

但是,这一行给出了以下警告:

Promise returned from wrapFetch is ignored

我曾尝试更改 wrapFetch 的返回类型,但这让情况变得更糟。任何建议我如何解决这个问题或我应该

【问题讨论】:

  • 这是打字稿还是 IntelliJ 发出的警告(参见 stackoverflow.com/questions/41278900/…)?在任何情况下,错误消息都是指您不使用 wrapFetch 方法返回的值这一事实,如果您是 async 函数,那么在调用之前一个简单的 await 就足够了,如果不是您可能应该添加一个catch 处理程序以避免任何静默错误
  • 是的,来自我的 IDE 的警告,所以可以忽略它!
  • 我的评论能解决你的问题吗?我可以把它变成答案
  • 几乎,我试图重现它(here,但流程还不正确,console.log('f') 仍然在console.log('e') 之前。有没有办法解决这个问题,而不使用@ 987654333@ 在doIt 函数内?
  • 好的,我读你的评论有点太快了。要解决您的问题,您只需将所有方法设为async 并在方法调用之前添加await 关键字(例如在doIt 方法中......)如果您不关心结果,只需对于控制流,在示例中添加它们stackblitz.com/edit/typescript-1iqahc?file=index.ts

标签: typescript async-await


【解决方案1】:

这是 typescript 还是 IntelliJ 发出的警告(cf Intellij Idea warning - "Promise returned is ignored" with aysnc/await) ? 在任何情况下,错误消息都是指您不使用 wrapFetch 方法返回的值。

解决您的第二个问题(console.log 调用的顺序) 你只需要让你的所有方法异步并添加 await 关键字 在方法调用之前(例如在 doIt 方法中......)即使你不关心结果, 只是为了控制流,我在示例 stackblitz.com/edit/typescript-1iqahc?file=index.ts 中添加了它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 2012-07-17
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2019-01-10
    • 2023-04-02
    相关资源
    最近更新 更多