Asynchronität der chrome.tabs.query-Methode von Chrome
Beim Versuch, Informationen zu allen Tabs mithilfe der chrome.tabs.query-Methode von Chrome abzurufen, Möglicherweise tritt ein unerwartetes Verhalten auf, bei dem bei der nachfolgenden Codeausführung keine Ergebnisse verfügbar sind. Dies liegt an der asynchronen Natur der chrome.tabs.query-Methode.
Grundlegendes zur asynchronen Funktionalität
Asynchrone Methoden werden nicht sofort ausgeführt. Stattdessen werden sie in die Warteschlange gestellt und zu einem späteren Zeitpunkt ausgeführt, typischerweise wenn der Vorgang, den sie darstellen, abgeschlossen ist. Im Fall von chrome.tabs.query werden alle verfügbaren Browser-Registerkarten abgefragt und die bereitgestellte Rückruffunktion ausgeführt, sobald der Vorgang abgeschlossen ist, wobei ein Array von Tab-Objekten als Argument bereitgestellt wird.
Codeausführung Auswirkungen
Diese Asynchronität hat Auswirkungen auf den Code, den Sie nach dem Aufruf von chrome.tabs.query ausführen. Da die Ergebnisse nicht sofort verfügbar sind, wird nachfolgender Code, der auf der Verfügbarkeit der Registerkarteninformationen basiert, nicht wie erwartet ausgeführt.
Beheben des Problems
Um dieses Problem zu beheben , sollten Sie den Code, der auf den Tab-Informationen basiert, in die Rückruffunktion verschieben, die für chrome.tabs.query bereitgestellt wird. Dadurch wird sichergestellt, dass der Code erst ausgeführt wird, wenn die Ergebnisse vorliegen.
Beispiel:
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); } } });
Das obige ist der detaillierte Inhalt vonWarum gibt „chrome.tabs.query' Ergebnisse asynchron zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!