问题描述
我的项目中有一个函数 (foo
),它返回一个 promise,但通常不需要等待 promise 解决,因此永远不会附加 .then() 处理程序。 Intellij IDEA 很有帮助,因为它总是用警告标记它。这可以通过添加删除
// JSIgnoredPromiseFromCall
到文件的顶部。但这将使它忽略所有被忽略的承诺,这不是我们想要的。为每个语句添加注释也不理想,因为该函数经常被调用,所以它只会污染源代码。
有没有办法用文件级 suppeRSS 注释指定要忽略的确切函数?例如
// noinspection JSIgnoredPromiseFromCall[foo]
解决方法
我怀疑您是否可以在函数级别指定这一点,而不是首先不让函数返回承诺,这就是我将如何解决这个问题。例如:
function foo() {
const promise = /*...foo's original logic...*/;
promise.catch(error => {
// ...report the error if that's appropriate...
// **DO** include this handler even if you don't report it,// to avoid unhandled rejection errors
});
}
请注意,foo
不会返回 promise
。承诺完全在 foo
内处理。
如果在某些情况下您确实需要使用 promise 而其他情况下您不需要,请创建两个函数并根据情况使用适当的一个:
function originalFoo() {
return /*...foo's original logic...*/;
}
function silentFoo() {
originalFoo().catch(error => {
// ...report the error if that's appropriate...
// **DO** include this handler even if you don't report it,// to avoid unhandled rejection errors
});
}