我试图在stop == false时使函数终止,但是我不确定从调试警报告诉我的一切如何执行。
代码:
chrome.tabs.onRemoved.addListener(checkTabs);
function checkTabs() {
var stop = true;
chrome.windows.getAll({populate:true},function(windows)
{
windows.forEach(function(window)
{
window.tabs.forEach(function(tab)
{
for(var i = 0; i < numWatch; i++)
{
if(tab.url.indexOf(watchList[i]) != -1)
{
stop = false;
alert("(1)" + stop); //When the if condition is false, I somehow get this alert after the one below
return;
}
}
});
});
});
alert("(2)" + stop); //I always get this alert first and it always reads "true"
if(stop == true)
{
clearInterval(timer);
timerOn = false;
}
}
该代码块始终执行-我的第一个警报始终为“ true”;即使我以将stop设置为false的方式设置选项卡,它也会首先警告“ true”,然后警告“ false”:
if(stop == true)
{
clearInterval(timer);
timerOn = false;
}
这是为什么?我可以看到一个使程序正常工作的非常简单的解决方法,但是我很好奇为什么我的函数的行为如此奇怪:底部的if语句似乎以某种方式在其前面的语句之前执行...
这是我的清单(尽管我怀疑它是否相关)-上面的代码是我的background.js脚本的一部分:
{
"manifest_version": 2,
"name": "Drill Sergeant",
"description": "Tracks time spent on 'watchlist' websites",
"version": "1.0.0",
"browser_action": {
"default_popup": "popup.html"
},
"background": {"scripts": ["background.js"]},
"permissions": ["activeTab", "webNavigation", "notifications", "tabs", "background"]
}