> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Command Queue

> Utilisez la Command Queue de Kameleoon pour exécuter en toute sécurité des commandes de l'Activation API avant ou après le chargement du moteur, sans conflits de timing.

La plateforme Kameleoon propose une [Activation API](./api-reference) basée sur JavaScript pour récupérer des données (telles que la géolocalisation du visiteur) et modifier le comportement du moteur (comme l'assignation manuelle de variations).

Cependant, les développeurs doivent s'assurer que le moteur Kameleoon est chargé avant d'accéder à l'Activation API. Cette exigence complique l'intégration directe de code JavaScript dans les fichiers HTML.

La Command Queue de Kameleoon permet l'exécution différée de commandes, à l'instar de Google Analytics. Au lieu d'appeler l'Activation API via l'objet `Kameleoon.API`, passez les commandes et fonctions à l'objet `kameleoonQueue`. Le moteur exécute ces commandes immédiatement s'il est chargé ; sinon, il les met en file d'attente pour exécution lorsqu'il est prêt.

## Utilisation et description de l'objet Command Queue

Pour utiliser l'objet `kameleoonQueue`, exécutez d'abord le code d'initialisation suivant. Le [tag d'installation Kameleoon](../../../web-experimentation/implementation-and-deployment/standard-implementation) inclut généralement ce code en haut du fichier HTML, après la balise `<head>` d'ouverture. Dans ce cas, aucune action supplémentaire n'est requise. Cependant, si vous utilisez une configuration personnalisée (par exemple, le chargement de Kameleoon via un Tag Manager), initialisez la file d'attente avant d'ajouter du code personnalisé.

```js theme={null}
window.kameleoonQueue = window.kameleoonQueue || [];
```

Pendant le chargement du fichier d'application Kameleoon, `kameleoonQueue` agit comme un tableau JavaScript standard qui accepte des commandes via la méthode `push()`. Après le chargement, le moteur traite le tableau et exécute les commandes dans l'ordre. Le moteur remplace ensuite le tableau par un objet personnalisé dont la méthode `push()` exécute les commandes immédiatement.

### Syntaxe

Passez soit un tableau, soit une fonction anonyme à la méthode `push()`.

```js theme={null}
kameleoonQueue.push(['Kameleoon.API.Events.trigger', 'myCustomEvent']);
kameleoonQueue.push(['Events.trigger', 'anotherEvent']);
```

Lorsque vous passez un tableau, le premier objet représente le nom de la méthode de l'API Kameleoon (sous forme de chaîne), et les objets suivants représentent les arguments de la méthode.

<Note>
  Utilisez soit le nom complet de la méthode (par exemple, `Kameleoon.API.Core.enableLegalConsent`), soit le nom court (par exemple, `Core.enableLegalConsent`). Les arguments supplémentaires sont facultatifs.
</Note>

Passez directement une fonction anonyme comme argument. Kameleoon utilise la fonction comme callback lorsqu'il est prêt à traiter.

```js theme={null}
kameleoonQueue.push(function() {
  const experimentID = 1;
  const variationID = 3;
  Kameleoon.API.Experiments.assignVariation(experimentID, variationID);
});
```

La command queue fonctionne également dans le code HTML, comme illustré dans l'exemple ci-dessous. Initialisez `kameleoonQueue` avant que le navigateur ne rencontre l'élément HTML ciblé pour garantir le suivi des clics, même si le moteur n'a pas été chargé.

```html theme={null}
<button onclick="kameleoonQueue.push(['Goals.processConversion', 42]);">
  Action Button with Kameleoon goalID = 42
</button>
```

<Note>
  Par défaut, Kameleoon exécute les commandes en file d'attente lorsque la configuration (campagnes, objectifs, segments, etc.) est prête et après l'exécution du [script personnalisé global](/user-manual/project-management/manage-your-projects#Configuration).

  Utilisez l'argument `level: "IMMEDIATE"` lors de l'ajout d'une commande pour l'exécuter immédiatement, sans attendre le traitement de la configuration. Cela est utile pour le code requis avant que Kameleoon n'instancie les fonctions.

  Voici un exemple d'utilisation de l'argument `level: "IMMEDIATE"` :

  ```js theme={null}
  function callback = () => {
   {... any code to run before Kameleoon triggers any campaign code}   
  };
  window.kameleoonQueue.push({
  	level: "IMMEDIATE",
  	command: callback
  });
  ```

  Dans cet exemple, la fonction `callback` s'exécute immédiatement, indépendamment du traitement de la configuration.

  Utilisez l'argument `level: "IMMEDIATE"` pour remplacer les fonctions internes de Kameleoon. La redéfinition de fonction standard échoue si le moteur charge et exécute d'abord la version originale. Le niveau `IMMEDIATE` garantit que la fonction personnalisée s'exécute avant que le moteur ne charge sa propre version.
</Note>
