2011-11-09 12 views
0

私は現在かなりの苦境を抱えています。真であると評価される、私が書いたif文は実行されていません。実行はelseに続きます。何が起こっているのかを判断するのに役立つことを期待して、コードの一部を含めます。Javascriptの "if"文が失敗する

私はGoogle Chromeの拡張機能を構築しています。私のpopup.htmlは、いくつかの値を返すコンテンツスクリプトにリクエストしています。この後、私はif文ロジックを実行するために得られた変数を使用します。私は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) 
{ 
} 

することは、私は、そのステータスが「停止」に等しく、bg.StopTextも「停止」に等しいことがわかります。私は私のコンソールに

status && status === bg.StopText 

をコピーし、それを実行するとさらに、結果はtrueです。

問題がある場合は誰でも見ることができますが、私はこれ以上問題を解決するために必要ないくつかの手順を説明していますか?

答えて

4

あなたは競合状態にあります。リクエストを送信すると、リクエストが返るまでステータスをチェックすることはできません。非同期です。実行を一時停止すると、非同期呼び出しが完了するまでの時間が許され、既に値があるように見えます。

1

chrome.tabs.getSelected同期または非同期ですか?非同期の場合は、ブレークポイントでスクリプトを一時停止している間に完了している可能性があります。

console.log(status+' '+bg.StopText);の前にifを追加して、その表示内容を確認してください。

関連する問題