如何在Javascript中忘记"等待"异步函数时发出警告?

Leo*_*ang 14 javascript webpack babeljs

我正在使用Babel和Webpack.如果我忘记await了异步功能,它通常会被忽视.偶尔,如果我忘记了await,异步函数中会出现错误,我得到一个Unhandled promise rejection.然后,我意识到我忘记了await.

当我忘记添加一个时,有没有办法得到警告await

Kir*_*eck 12

设置更好的与webpack,repo和代码编辑器的eslint集成.
这是适用的规则,需要等待.

考虑整合以下内容:

  • `require-await`并没有真正帮助.如果OP忘记了"等待"一个承诺,他肯定也忘了制作应该等待`async`的函数. (4认同)
  • 虽然这总比没有好,但它也没有捕捉到您有一个带有多个 `await` 的 `async` 函数而你只忘记了一个的情况。令我惊讶的是 eslint 不支持简单的 *always await async functions* 规则,但事实证明,这实现起来非常复杂 - 请参阅此线程 https://github.com/eslint/eslint/issues/9787 (3认同)

Luk*_*ams 6

由于不推荐使用 TSLintno-floating-promisesESLint 规则要求您明确处理任何承诺(例如 withawaitvoid)。

这是一个最小的.eslintrc. 请注意,parserOptions此规则需要:

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "parserOptions": { "project": "./tsconfig.json" },
  "plugins": ["@typescript-eslint"],
  "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
  "rules": {
    "@typescript-eslint/no-floating-promises": ["error"]
  }
}
Run Code Online (Sandbox Code Playgroud)

归功于@zaboco 的评论


ube*_*kel 5

我觉得OP是寻找类似no-floating-promisestslint看:https://palantir.github.io/tslint/rules/no-floating-promises/

  • 还有一个 eslint 变体:https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-floating-promises.md (9认同)
  • 如果我们不使用 TypeScript,这些都不起作用,对吗?JavaScript 项目是否有类似的规则? (2认同)