使用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方法用於異步檢索所有開啟的選項卡。但是,後續的 console.log 語句將會失敗,因為 fourmTabs 陣列尚未使用結果更新。
解決方案
要存取結果,程式碼依賴它們的程式碼必須放置在回調函數中,如下所示:
<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中文網其他相關文章!