在 promise 语法之前无效

Posted

技术标签:

【中文标题】在 promise 语法之前无效【英文标题】:void before promise syntax 【发布时间】:2019-08-28 17:51:10 【问题描述】:

void 放在promise 之前的实际影响是什么?

async function doAsyncStuff()
...


function nonAsyncFunction()
  void doAsyncStuff();

我找不到任何官方文档,但它必须在解决no-floating-promises TSLint 错误时做一些事情。

【问题讨论】:

void 运算符的文档怎么样? developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 是的,这正是我想要的。试图在 Promise 文档中找到它,显然我没有找对地方。 是的,void 自从 Brendan Eich 穿短裤以来一直是 javascript 操作员:p 另见:Can I fire and forget a promise in nodejs (ES7)? 我个人更喜欢/*await*/ fireAndForget();,因为对 JS 不太熟悉的人也能理解,但这并不能阻止 linter 抱怨 【参考方案1】:

void 是一个运算符,它接受右侧的值并计算为 undefined

它解决了 no-floating-promises,因为它对 Promise 做了一些事情(或者更确切地说,什么都不做)。

【讨论】:

哦,哇,TIL 的人们使用void 来压制规则。归档github.com/palantir/tslint/issues/4653。感谢@Quentin! ^ 或者,如何在一个简单的步骤中使答案不正确。 看起来这种行为可以通过一些配置恢复,至少使用 typescript-eslint。见typescript-eslint.io/rules/no-floating-promises

以上是关于在 promise 语法之前无效的主要内容,如果未能解决你的问题,请参考以下文章

Promise的那些事儿

无法生成库。无效的规则结果:Promise 类的实例

Promise的基本语法

如何使用Promise填充层次结构,其中每个级别都需要满足之前的级别?

Promise.then() 在 promise 解决之前执行

如何在异步/等待语法中使用 Promise.prototype.finally()?