如何在 intellij 中发出 "ignored promise" 警告但仅针对特定功能?

How to suppers "ignored promise" warnings in intellij but only for a specific function?

我的项目中有一个函数 (foo),它 returns 一个承诺,但通常不需要等待承诺解决,因此永远不会有 .then() 处理程序随附的。 Intellij IDEA 很有帮助,因为它总是用警告标记它。这可以通过添加

来删除
// JSIgnoredPromiseFromCall

到文件的顶部。但这将使它忽略所有被忽略的承诺,这不是我们想要的。为每个语句添加注释也不理想,因为该函数经常被调用,所以它只是不必要地污染源代码。

有没有一种方法可以指定在文件级 superss 注释中忽略哪个函数?例如

// noinspection JSIgnoredPromiseFromCall[foo]

我怀疑您是否可以在函数级别指定它,而不是首先不让函数 return 成为承诺,这就是我解决这个问题的方法。例如:

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 不是 return 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
    });
}