问题 如何在Javascript中忘记“等待”异步函数时发出警告?


我正在使用Babel和Webpack。如果我忘了 await 一个异步函数,它经常被忽视。偶尔,如果我忘记了 await,async函数发生错误,我得到一个 Unhandled promise rejection。然后,我意识到我忘记了 await

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


3036
2018-01-16 21:59


起源

如果你经常使用它,那么自己构建一个模板,抛出一个错误,直到所有必需的东西都被提出来 - Bindrid
如果你正在使用ESLint,可能是 require-await 棉绒足以满足您的需求吗?它不会捕获在别处定义的导入的异步函数,但它会捕获一些情况 - Bojangles
@Bojangles它可能会有所帮助,但绝对不会捕获所有错误。我想要一种方法来要求所有异步函数调用在它们之前等待。 - Leo Jiang
require all async function calls to have an await before them  - 我不推荐你 要求 它, 警告 就足够了,因为完全有效而不需要等待 async 函数 - 实际上,代码中至少有一个位置 有 调用标记的函数 async  无 运用 await,因为之间的关系 await/async 关键字 - Jaromanda X
@JaromandaX你是对的。此外,等待异步函数数组可能会没有异步函数调用 await 直接在它前面(如果我们动态构建数组)。我想我正在寻找的是一种需要的方式 await 默认情况下,我们可以明确地抑制错误。这样,它可以确保异步函数调用 await 是有意的。 - Leo Jiang


答案:


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

考虑整合以下内容:


9
2018-01-23 20:31



require-await 没有真正的帮助。如果OP忘记了 await 一个承诺,他肯定也忘记了应该等待的功能 async。 - Bergi
虽然这比没有好,但它也没有遇到你有的情况 async 具有多个功能 await你忘记了一个人。令我感到惊讶的是,eslint并不支持简单 总是等待异步函数 规则但事实证明这实现起来非常复杂 - 请参阅此主题 github.com/eslint/eslint/issues/9787 - davnicwil


我认为OP正在寻找类似的东西 no-floating-promises 从 tslint 看到: https://palantir.github.io/tslint/rules/no-floating-promises/


2
2017-09-22 23:26