chrome.tabs.query による非同期結果
chrome.tabs.query を呼び出すと、予期した結果がすぐに利用できない場合があります。
非同期について
非同期関数は、実際の結果を受け取るために外部エンティティによって実行される必要があるコールバック関数を返します。通常、コールバック関数は、結果が利用可能になると呼び出されます。
chrome.tabs.query の例
次の簡略化されたコード スニペットを考えてみましょう:
<code class="javascript">var fourmTabs = new Array(); chrome.tabs.query({}, function (tabs) { fourmTabs = tabs; console.log(fourmTabs[0].url); });</code>
この例では、chrome.tabs.query メソッドを使用して、開いているすべてのタブを非同期的に取得します。ただし、fourmTabs 配列がまだ結果で更新されていないため、後続の console.log ステートメントは失敗します。
解決策
結果にアクセスするには、コードこれらに依存するものは、以下に示すようにコールバック関数内に配置する必要があります。
<code class="javascript">var fourmTabs = new Array(); chrome.tabs.query({}, function (tabs) { fourmTabs = tabs; for (var i = 0; i < fourmTabs.length; i++) { if (fourmTabs[i] != null) console.log(fourmTabs[i].url); else { console.log("??" + i); } } });</code>
コードをコールバック関数内に配置することで、fourmTabs 配列に結果が確実に入力されるようになります。コードが実行されます。
以上がchrome.tabs.query で非同期結果を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。