如何解决Sonarlint“重构冗余等待非承诺”代码提示......但函数确实返回了一个承诺
我正在编写一个小脚本,为了调用方法 (main) 的可读性,我决定将带有一堆标头的提取包装到它们自己的方法中。
async function main(){
...
let res = get_fromSpecificFetch();
...
}
async function get_fromSpecificFetch() {
try {
return fetch("https://www.website.com/apiendpoint",{
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","accept-language": "en-US,en;q=0.9","sec-ch-ua": "\" Not A;Brand\";v=\"99\",\"Chromium\";v=\"90\",\"Google Chrome\";v=\"90\"","sec-ch-ua-mobile": "?0","upgrade-insecure-requests": "1"
},"referrer": "https://www.website.com/","referrerPolicy": "strict-origin-when-cross-origin","body": null,"method": "GET","mode": "cors"
})
} catch {
throw new Error("launch");
}
}
Sonarlint 突出显示我的代码并说: “在非承诺的情况下重构这个多余的等待”。
...但这确实返回了一个承诺。如果我不等待这个,那么我的承诺将仍然悬而未决。我不想禁用此规则(因为它在正确时很有用),但在这种情况下它是错误的。
我知道我没有使用打字稿,那么 solarlint 怎么知道返回类型呢? 用 JsDoc 之类的东西定义返回类型会解决这个问题吗?
也许有更好的方法来组织我的代码?
(我不能一次定义这个 fetch 包装器并传递不同的 url/headers 对象,因为有时我的 fetch 包装器内部会有解析逻辑,但这无论如何都不能解决我的问题)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。