Maison > Article > interface Web > Pourquoi « chrome.tabs.query » renvoie-t-il les résultats de manière asynchrone ?
Asynchronicité de la méthode chrome.tabs.query de Chrome
Lors de la tentative de récupération d'informations sur tous les onglets à l'aide de la méthode chrome.tabs.query de Chrome, vous pouvez rencontrer un comportement inattendu où les résultats ne sont pas disponibles lors de l'exécution ultérieure du code. Cela est dû à la nature asynchrone de la méthode chrome.tabs.query.
Comprendre la fonctionnalité asynchrone
Les méthodes asynchrones ne s'exécutent pas immédiatement. Au lieu de cela, ils sont mis en file d'attente et exécutés ultérieurement, généralement lorsque l'opération qu'ils représentent est terminée. Dans le cas de chrome.tabs.query, il interroge tous les onglets disponibles du navigateur et exécute la fonction de rappel fournie une fois l'opération terminée, fournissant un tableau d'objets Tab comme argument.
Exécution de code Implications
Cette asynchronicité a des implications sur le code que vous exécutez après avoir appelé chrome.tabs.query. Comme les résultats ne sont pas immédiatement disponibles, tout code ultérieur reposant sur la disponibilité des informations de l'onglet ne s'exécutera pas comme prévu.
Résoudre le problème
Pour résoudre ce problème , vous devez déplacer le code qui repose sur les informations de l'onglet dans la fonction de rappel fournie vers chrome.tabs.query. Cela garantit que le code n'est exécuté qu'une fois les résultats disponibles.
Exemple :
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); } } });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!