Intellij Idea 如何在IntelliJ中抑制“忽略promise”警告,但仅针对特定函数?

fnvucqvd  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(144)

我在我的项目中有一个函数foo,它返回一个promise,但通常不需要等待promise解析,所以从来没有附加.then()处理程序。Intellij IDEA很有用,因为它总是用警告标记它。这可以通过添加

// JSIgnoredPromiseFromCall

但是这将使它忽略所有被忽略的promise,这不是我们想要的。为每个语句添加注解也不是理想的,因为函数经常被调用,所以它只会污染源代码。
是否有一种方法可以指定文件级抑制注解忽略的确切函数?

// noinspection JSIgnoredPromiseFromCall[foo]
6pp0gazn

6pp0gazn1#

我怀疑你是否可以在函数级别指定这一点,而不是让函数首先返回一个promise,这就是我解决这个问题的方法。例如:

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。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
    });
}

相关问题