Maison > interface Web > js tutoriel > le corps du texte

Pourquoi mes résultats `chrome.tabs.query()` sont-ils inaccessibles ?

Susan Sarandon
Libérer: 2024-10-31 12:36:02
original
294 Les gens l'ont consulté

Why Are My `chrome.tabs.query()` Results Inaccessible?

Après l'appel de chrome.tabs.query, les résultats semblent inaccessibles

Lors de la tentative d'accès aux résultats de chrome.tabs.query() , les développeurs peuvent rencontrer un comportement inattendu où les résultats semblent indisponibles. Ce problème provient de la nature asynchrone de la requête.

Dans la programmation asynchrone, les fonctions fonctionnent en dehors du thread principal d'exécution. Ainsi, la boucle principale peut continuer à exécuter du code pendant que la fonction asynchrone est toujours en cours d'exécution.

Pour illustrer cela, considérons l'exemple suivant :

var fourmTabs = new Array();
chrome.tabs.query({}, function (tabs) {
    for (var i = 0; i < tabs.length; i++) {
        fourmTabs[i] = tabs[i];
    }
});

for (var i = 0; i < fourmTabs.length; i++) {
    if (fourmTabs[i] != null)
        window.console.log(fourmTabs[i].url);
    else {
        window.console.log("??" + i);
    }
}
Copier après la connexion

Dans ce cas, la boucle for suivant la La requête s'exécutera avant que la fonction de rappel affectée à tabs.query n'ait terminé son exécution. Par conséquent, les résultats de la requête ne sont pas encore disponibles dans la boucle.

Pour résoudre ce problème, le code qui s'appuie sur les résultats de la requête doit être placé dans la fonction de rappel. Par exemple :

var fourmTabs = new Array();
chrome.tabs.query({}, function (tabs) {
    for (var i = 0; i < tabs.length; i++) {
        fourmTabs[i] = tabs[i];
    }
    // Code relying on the query results here
});
Copier après la connexion

En déplaçant le code qui utilise les résultats de la requête dans la fonction de rappel, nous garantissons qu'il ne s'exécutera qu'une fois les résultats disponibles, éliminant ainsi le problème.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal