0

次のような関数があります。

main.add = function(){
    var newTabId;
    chrome.tabs.create({"url":"enter.html","active":true},
        function(tab) {
            newTabId = tab.id;
        }
    );
    console.log(newTabId);
}

しかし、newTabIdがコンソールに出力されると、 chrome.tabs.create 関数が実行されていないため、var はundefined.

その下で何かを実行する前に、chrome名前空間のコードを確実に終了させる方法はありますか?

4

1 に答える 1

0

まず、newTabId グローバルを実行し、関数の外で定義します。2 つの「newTabId」は、異なる名前空間に属しています。

Secondo、chrome.tabs.create 内の関数は、メイン コードが終了した後に開始されます。非同期プログラミングです。chrome API はすべて非同期なので、それに慣れてください。悲しいことに、回避策はありません。

非同期について考え始めたい場合は、jQuery のdeferredでpromiseを使用することをお勧めします。

于 2013-01-29T11:50:07.260 に答える