Javascript ESLint能否帮助您防止未经处理的承诺拒绝?

Javascript ESLint能否帮助您防止未经处理的承诺拒绝?,javascript,node.js,ecmascript-next,custom-error-handling,unhandled-promise-rejection,Javascript,Node.js,Ecmascript Next,Custom Error Handling,Unhandled Promise Rejection,eslint是否有能力就防止未经处理的承诺拒绝的地方发出警告 未经处理的承诺拒绝被弃用。在未来,承诺 未处理的拒绝将终止Node.js进程 使用非零退出代码。- 你知道吗,我有点喜欢引擎目前处理未处理承诺拒绝的方式;因为当您遇到未经处理的承诺拒绝时,服务将继续运行,而不是整个服务崩溃,并且只有依赖于错误承诺实例的部分无法完成。假设错误是由程序员在验证期间没有预料到的某些用户输入引起的。发生异常的异步函数将继续服务于其他调用(那些没有相同的意外用户输入的调用)。是的,在这一点上,程序中有垃圾,以永

eslint是否有能力就防止未经处理的承诺拒绝的地方发出警告

未经处理的承诺拒绝被弃用。在未来,承诺 未处理的拒绝将终止Node.js进程 使用非零退出代码。-

你知道吗,我有点喜欢引擎目前处理未处理承诺拒绝的方式;因为当您遇到未经处理的承诺拒绝时,服务将继续运行,而不是整个服务崩溃,并且只有依赖于错误承诺实例的部分无法完成。假设错误是由程序员在验证期间没有预料到的某些用户输入引起的。发生异常的异步函数将继续服务于其他调用(那些没有相同的意外用户输入的调用)。是的,在这一点上,程序中有垃圾,以永远等待的形式,永远不会解决,但对我来说,这比允许服务完全崩溃更健壮

无论如何,我想其他人已经决定完美比健壮更重要

因此,现在是我通过使用
.catch(()=>{})使代码变得丑陋和完美的时候了在我的代码中的所有等待之后不久追加,这些等待看起来像之前的MOP&GLOW

ESlint是否提供了任何帮助我定位无捕获的承诺?为了解决这一丑陋和不便,是否有任何规范补充


就我个人而言,我希望我可以将引擎配置为只终止从未经处理的PromiseRejection开始的承诺链中的代码。我当然想比添加所有那些
.catch(()=>{})
到所有等待的异步函数调用中更容易解决这个问题。

将代码移植到
异步
/
等待
而不是承诺链将有助于开始,并使代码更漂亮;在那里

无论如何,我想其他人已经决定完美比健壮更重要

如果你问我的话,新的行为更合理(特别是在使用
async
/
wait
时,
.catch(()=>…)
只是通常的
catch(e){…}
,而不是捕获异常,嗯…)


如果您确实使用
.then()
语法,那么添加
.catch(()=>{})
会向读者发出信号,表明您明确不关心发生的任何错误。

ESLint本身没有您正在寻找的功能,但是有一个非常流行的插件,名为

具体而言,该规则满足您的要求:

确保每次对承诺应用then()时,也会应用catch()。如果您要回复该承诺,则会有例外

有效的
myPromise.then(doSomething.catch)(错误)
我的承诺
.然后(做某事)
.然后(doSomethingElse)
.catch(错误)
函数doSomethingElse(){
回报我的承诺。然后(做些事情)
}
无效的
myPromise.then(doSomething)
那么(doSomething,catchErrors)//catch()可能会更好一些
函数doSomethingElse(){
回报我的承诺。然后(做些事情)
}

我想知道为什么没有人提到“typescript eslint”中的“无浮动承诺”规则,该规则强制使用
async/await
then/catch
-
或许应该称之为“没有未经处理的承诺”。)

查看
捕获或返回
,这应该会对您有所帮助,因为这将增加MOPnGLOWfurther@m90莫彭洛是什么意思?@Jhecht它实际上被称为。这是一种使地板光亮的产品。啊……是的。。。这使得。。。感觉仍然很混乱,但是是对的on@Jhecht就我而言,这是一个糟糕的类比;我在丰富多彩方面失败了。我已经在大量使用async/Wait。但是,每个异步函数调用都返回一个承诺,“try/catch”语法并不比
.catch()=>{}
好多少;似乎缺少“.catch()=>{}”就足够清楚地表明我不在乎了,而不必如此详细明确。最后,我们的目标是防止服务器崩溃,我认为小的。嗯,你可以写一个帮手<代码> const SWALVELATEONS =(P)= > P.CKET(E= >控制台,警告(E))< /代码>,并把那些你不关心的承诺包起来,例如。PyCharm/WebStorm IDE有一个注释,用于忽略承诺返回值;不确定ESLint是否执行。调用的每个常规函数也可能是未捕获的异常。:)没错,这对我来说是个值得思考的问题。也许他们应该像常规函数中的异常一样崩溃您的服务是有道理的,但对于我来说,很难通过自动忽略这些未处理的承诺拒绝来支持崩溃的服务而不是运行健壮的服务。再一次,对我来说,这是一个值得思考的问题……这应该被标记为最新的、最好的答案。到今天为止,
eslint-plugin-promise
已经两年没有发布了,而
typescript-eslint
是typescript-eslint的标准插件,其最新发布时间为两天ago@ppicom仅仅根据软件包的发布来判断某件事情并不总是有很多好处。如果没有需要修复的bug,也没有适用的新功能,那么高度集中的软件包通常不需要更新。另外,你的比较是针对一个专注于语言承诺功能的插件,还是针对一个支持整个语言的插件。@DannyHurlburt我不太明白你想表达的意思。既然linter已经支持该功能,为什么还要安装另一个插件呢?此外,最新版本有时是维护人员活动程度的指标,可以大致了解包是否得到维护。说到这里,有一个
eslint plugin promise
的版本,所以我之前的评论是