Chrome の chrome.tabs.query メソッドの非同期
Chrome の chrome.tabs.query メソッドを使用してすべてのタブに関する情報を取得しようとすると、後続のコード実行時に結果が得られないという予期せぬ動作が発生する可能性があります。これは、chrome.tabs.query メソッドの非同期の性質によるものです。
非同期機能について
非同期メソッドはすぐには実行されません。代わりに、それらはキューに入れられ、後で、通常はそれらが表す操作が完了したときに実行されます。 chrome.tabs.query の場合、利用可能なすべてのブラウザ タブをクエリし、操作が完了すると、Tab オブジェクトの配列を引数として指定して、提供されたコールバック関数を実行します。
コードの実行影響
この非同期性は、chrome.tabs.query の呼び出し後に実行するコードに影響を与えます。結果はすぐに利用できないため、タブ情報の可用性に依存する後続のコードは期待どおりに実行されません。
問題の解決
この問題に対処するにはの場合は、タブ情報に依存するコードを chrome.tabs.query に提供されるコールバック関数内に移動する必要があります。これにより、結果が利用可能になった場合にのみコードが実行されることが保証されます。
例:
var fourmTabs = new Array(); chrome.tabs.query({}, function (tabs) { for (var i = 0; i < tabs.length; i++) { fourmTabs[i] = tabs[i]; } // Moved code inside the callback handler for (var i = 0; i < fourmTabs.length; i++) { if (fourmTabs[i] != null) { window.console.log(fourmTabs[i].url); } else { window.console.log("??" + i); } } });
以上が「chrome.tabs.query」が非同期で結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。