2011-11-09 56 views
0

我目前有相當的困境。我寫的一個if語句 - 其結果爲真 - 沒有被執行。執行繼續到其他部分。我會包含一段代碼,希望能夠幫助確定發生了什麼。Javascript「if」聲明失敗

我正在構建谷歌瀏覽器擴展程序,並且我的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語句本身,我可以看到,status等於「停止」,並bg.StopText也等於「停止」。此外,當我複製

status && status === bg.StopText 

到我的控制檯並執行它,結果是true

任何人都可以看到,如果有,我掩飾的問題,可能還有一些步驟,我可能需要進一步解決呢?

回答

4

您有一個競賽條件。如果您發送請求,則在請求返回之前無法檢查狀態,它是異步的。當你暫停執行時,它允許完成異步調用的時間,看起來你已經有了一個值。

1

chrome.tabs.getSelected同步或異步?如果它是異步的,那麼它可能會在斷點處暫停腳本時完成。

嘗試if之前添加console.log(status+' '+bg.StopText);,看看那個顯示器。