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

> Utilice la Kameleoon Command Queue para ejecutar de forma segura comandos de la Activation API antes o después de que el motor se cargue, sin conflictos de sincronización.

La plataforma Kameleoon ofrece una [Activation API](./api-reference) basada en JavaScript para recuperar datos (como la geolocalización del visitante) y modificar el comportamiento del motor (como la asignación manual de variaciones).

Sin embargo, los desarrolladores deben asegurarse de que el motor de Kameleoon esté cargado antes de acceder a la Activation API. Este requisito complica la incrustación directa de código JavaScript en archivos HTML.

La Kameleoon Command Queue permite la ejecución diferida de comandos, de forma similar a Google Analytics. En lugar de llamar a la Activation API a través del objeto `Kameleoon.API`, pase los comandos y funciones al objeto `kameleoonQueue`. El motor ejecuta estos comandos inmediatamente si ya está cargado; en caso contrario, los pone en cola para ejecutarlos cuando esté listo.

## Uso y descripción del objeto Command Queue

Para usar el objeto `kameleoonQueue`, ejecute primero el siguiente código de inicialización. El [tag de instalación de Kameleoon](../../../web-experimentation/implementation-and-deployment/standard-implementation) suele incluir este código en la parte superior del archivo HTML, después de la etiqueta de apertura `<head>`. En ese caso, no se requiere ninguna acción adicional. No obstante, si utiliza una configuración personalizada (por ejemplo, cargando Kameleoon mediante un Tag Manager), inicialice la cola antes de añadir código personalizado.

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

Mientras se carga el archivo de la aplicación de Kameleoon, `kameleoonQueue` actúa como un array de JavaScript estándar que acepta comandos a través del método `push()`. Tras la carga, el motor procesa el array y ejecuta los comandos en orden. A continuación, el motor reemplaza el array por un objeto personalizado cuyo método `push()` ejecuta los comandos de inmediato.

### Sintaxis

Pase al método `push()` un array o una función anónima.

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

Cuando se pasa un array, el primer objeto representa el nombre del método de la API de Kameleoon (como cadena) y los objetos siguientes representan los argumentos del método.

<Note>
  Utilice el nombre completo del método (por ejemplo, `Kameleoon.API.Core.enableLegalConsent`) o el nombre corto (por ejemplo, `Core.enableLegalConsent`). Los argumentos adicionales son opcionales.
</Note>

Pase una función anónima directamente como argumento. Kameleoon utiliza la función como callback cuando esté listo para procesarla.

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

La command queue también funciona dentro del código HTML, como se muestra en el ejemplo siguiente. Inicialice `kameleoonQueue` antes de que el navegador encuentre el elemento HTML de destino para garantizar el seguimiento del clic, incluso si el motor aún no se ha cargado.

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

<Note>
  De forma predeterminada, Kameleoon ejecuta los comandos en cola cuando la configuración (campañas, objetivos, segmentos, etc.) está lista y después de que se ejecute el [script personalizado global](/user-manual/project-management/manage-your-projects#Configuration).

  Use el argumento `level: "IMMEDIATE"` al añadir un comando para ejecutarlo inmediatamente, sin esperar al procesamiento de la configuración. Esto resulta útil para código que debe ejecutarse antes de que Kameleoon instancie las funciones.

  A continuación se muestra un ejemplo de cómo usar el argumento `level: "IMMEDIATE"`:

  ```js theme={null}
  function callback = () => {
   {... cualquier código que deba ejecutarse antes de que Kameleoon dispare código de campaña}   
  };
  window.kameleoonQueue.push({
  	level: "IMMEDIATE",
  	command: callback
  });
  ```

  En este ejemplo, la función `callback` se ejecuta inmediatamente, independientemente del procesamiento de la configuración.

  Use el argumento `level: "IMMEDIATE"` para sobrescribir funciones internas de Kameleoon. La redefinición estándar de funciones falla si el motor se carga y ejecuta primero la versión original. El nivel `IMMEDIATE` garantiza que la función personalizada se ejecute antes de que el motor cargue su propia versión.
</Note>
