返回承诺的函数必须是异步的

Posted

技术标签:

【中文标题】返回承诺的函数必须是异步的【英文标题】:functions that return promises must be async 【发布时间】:2019-04-25 08:34:46 【问题描述】:

当我在我的代码上运行 tslint 时,出现以下错误

functions that return promises must be async

这里是代码

private doSomething(): void 
    fetch(myUrl)
        .then((rsp: Response) => rsp.text()) // <-- gives error
        .then(txt => this.txt = txt);

现在不知道如何解决这个问题,因为代码运行得很好!有什么建议吗?

【问题讨论】:

@Kraylog no...这不是 fetch() API 的工作方式。 rsp.text() 回报承诺 rsp 是来自Fetch 的响应,所以我觉得不能同步 response.text() 返回一个承诺。 developer.mozilla.org/en-US/docs/Web/API/Body/text; 您是否使用了正确的响应类型? 【参考方案1】:

此错误消息是由 tslint 规则 promise-function-async 引起的。

您可以通过在箭头函数表达式上添加异步来遵守此规则:

.then(async (rsp: Response) =&gt; rsp.text())

【讨论】:

如果我这样做,我会收到以下错误:TSLint: Spaces before function parens are disallowed (space-before-function-paren) 删除 async 和开头括号之间的空格。您还可以配置您的编辑器/linter 以自动修复其中一些错误。

以上是关于返回承诺的函数必须是异步的的主要内容,如果未能解决你的问题,请参考以下文章

承诺等待得到解决而不返回

什么是everyauth 承诺?

对从异步函数返回的承诺感到非常困惑

从异步函数返回的承诺中获取价值

如何让 React Redux 异步操作返回一个承诺?

异步函数返回承诺,而不是值