Javascript“if”语句失败

时间:2011-11-09 05:32:06

标签: javascript if-statement google-chrome-extension

我目前有很多困境。我写的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

任何人都可以看到我是否有问题,我可以采取一些措施来解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

你有竞争条件。如果发送请求,则在请求返回之前无法检查状态,它是异步的。当您暂停执行时,它允许完成异步调用的时间,看起来您已经有了值。

答案 1 :(得分:1)

chrome.tabs.getSelected是同步还是异步?如果它是异步的,那么当你在断点处暂停脚本时,它可能正在完成。

尝试在console.log(status+' '+bg.StopText);之前添加if,然后查看显示的内容。