我目前有很多困境。我写的if语句 - 评估为true - 没有被执行。继续执行其他操作。我将包含一段代码,希望它有助于确定正在发生的事情。
我正在构建Google Chrome扩展程序,而我的popup.html
正在向我的内容脚本发出请求,该脚本会返回一些值。在此之后,我使用获得的变量来执行if语句逻辑。
var timer;
var status;
chrome.tabs.getSelected(null, function(tab)
{
chrome.tabs.sendRequest(tab.id, {method : 'GetTimer'},
function(response)
{
timer = response.Timer;
});
chrome.tabs.sendRequest(tab.id, {method : 'GetStatus'},
function(response)
{
status = response.Status;
});
});
// here is where the issue is occuring
if (status && status === bg.StopText)
{
}
当我在if语句本身断点时,我可以看到状态等于“Stop”,而bg.StopText也等于“Stop”。此外,当我复制
status && status === bg.StopText
进入我的控制台并执行它,结果为true
。
任何人都可以看到我是否有问题,我可以采取一些措施来解决这个问题吗?
答案 0 :(得分:4)
你有竞争条件。如果发送请求,则在请求返回之前无法检查状态,它是异步的。当您暂停执行时,它允许完成异步调用的时间,看起来您已经有了值。
答案 1 :(得分:1)
chrome.tabs.getSelected
是同步还是异步?如果它是异步的,那么当你在断点处暂停脚本时,它可能正在完成。
尝试在console.log(status+' '+bg.StopText);
之前添加if
,然后查看显示的内容。