'Named function expressions should not be used' 的 SonarError 解决方法

Workaround for SonarError for 'Named function expressions should not be used'

const objTimeout = setTimeout(
    function firePostMessagesToSubTab() {
    if (boolRemoved) {
        clearTimeout(objTimeout);
    } else {
        soneAsyncMethod.then(function () {
            setTimeout(firePostMessagesToSubTab, 1000);
        });
    }
}, 1000);

我写了一个递归的 setTimeout 但我们的声纳过滤器抛出错误

'Named function expressions should not be used'.

有解决办法吗?无法删除声纳规则(客户端...)。此外,我故意使用 setTimeOut 而不是 setInterval,因为 setInterval 不会等待方法完成。

function firePostMessagesToSubTab() {

这里firePostMessagesToSubTab是函数名。基本上,代码分析工具建议您使用匿名函数或将函数与 setTimeout 调用分开声明。

将您的代码更改为以下,它应该会通过规则

function firePostMessagesToSubTab() {
    if (boolRemoved) {
        clearTimeout(objTimeout);
    } else {
        soneAsyncMethod.then(function () {
            setTimeout(firePostMessagesToSubTab, 1000);
        });
    }
}
const objTimeout = setTimeout(firePostMessagesToSubTab, 1000);