Else 语句是 运行 即使它是假的

Else statement is running even though it is false

我试过的原始代码是这样的:

chrome.alarms.create("check-tabs", { periodInMinutes: .01, when: Date.now() + 500 });

chrome.alarms.onAlarm.addListener(function (alarm) {
    if (alarm.name == "check-tabs") {
        console.log("check-tabs");
        chrome.tabs.query({ active: false, lastFocusedWindow: false }, function (tabs) {
            for (i = 0; i < tabs.length; i++) {
                if (chrome.alarms.get(tabs[i].url) == undefined) {
                    chrome.alarms.create(tabs[i].url, { when: Date.now() + 10 * 1000 })
                }
            }
        });
    } else {
        console.log("not check-tabs, got alarm");
    }
});

但是else语句只会忽略它是错误的警报并显示“not check-tabs”。当我将 else 更改为:

时,同样的事情发生了
else if (alarm.name != "check-tabs")

结果是一样的。 当我将代码更改为:

时问题得到解决
chrome.alarms.create("check-tabs", { periodInMinutes: .01, when: Date.now() + 500 });

chrome.alarms.onAlarm.addListener(function (alarm) {
    if (alarm.name == "check-tabs") {
        console.log("check-tabs");
        chrome.tabs.query({ active: false, lastFocusedWindow: false }, function (tabs) {
            for (i = 0; i < tabs.length; i++) {
                if (chrome.alarms.get(tabs[i].url) == undefined) {
                    chrome.alarms.create(tabs[i].url, { when: Date.now() + 10 * 1000 })
                }
            }
        });
    } else if (alarm.name == "random-alarm-name") {
        console.log("not check-tabs, got alarm");
    }
});

但在我的代码中,当代码为 运行 时,将创建多个警报名称,因此名称并不具体。

注意:我知道不是因为第一个if语句创建的告警,我在没有创建那个告警的情况下进行了测试,结果是一样的。

有人知道如何解决这个问题吗?

您的侦听器代码可能被调用了多次。添加一个无条件的 condole.log('called ' + alarm.name),看看有多少被打印出来。