Maison  >  Article  >  interface Web  >  Comment gérer les résultats asynchrones avec chrome.tabs.query ?

Comment gérer les résultats asynchrones avec chrome.tabs.query ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 17:38:30793parcourir

How to Handle Asynchronous Results with chrome.tabs.query?

Résultats asynchrones avec chrome.tabs.query

Lors de l'appel de chrome.tabs.query, les résultats attendus peuvent ne pas être immédiatement disponibles en raison de sa nature asynchrone.

Comprendre l'asynchronie

Les fonctions asynchrones renvoient une fonction de rappel qui doit être exécutée par une entité externe pour recevoir le résultat réel. La fonction de rappel est généralement invoquée une fois le résultat disponible.

Exemple avec chrome.tabs.query

Considérez l'extrait de code simplifié suivant :

<code class="javascript">var fourmTabs = new Array();
chrome.tabs.query({}, function (tabs) {
    fourmTabs = tabs;
    console.log(fourmTabs[0].url);
});</code>

Dans cet exemple, la méthode chrome.tabs.query est utilisée pour récupérer tous les onglets ouverts de manière asynchrone. Cependant, l'instruction console.log suivante échouera car le tableau fourmTabs n'a pas encore été mis à jour avec les résultats.

Solution

Pour accéder aux résultats, le code qui en dépend doit être placé dans la fonction de rappel, comme indiqué ci-dessous :

<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>

En plaçant le code à l'intérieur de la fonction de rappel, il est assuré que le tableau fourmTabs aura été rempli avec les résultats avant le le code est exécuté.

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!

Déclaration:
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