Saltearse al contenido

Utilidades

Owl exporta algunas funciones de utilidad útiles para solucionar problemas comunes. Todas estas funciones están disponibles en el espacio de nombres owl.utils.

Contenido

  • whenReady: ejecutar código cuando el DOM está listo
  • loadFile: carga un archivo (útil para plantillas)
  • EventBus: un EventBus simple
  • validate: una función de validación
  • batched: llamadas de funciones por lotes

whenReady

La función whenReady devuelve una Promise resuelta cuando el DOM está listo (si aún no está listo, se resuelve directamente en caso contrario). Si se llama con una devolución de llamada como argumento, la ejecuta tan pronto como el DOM está listo (o directamente).

const { whenReady } = owl;
await whenReady();
// do something

or alternatively:

whenReady(function () {
// do something
});

loadFile

loadFile es una función auxiliar para obtener un archivo. Simplemente realiza una solicitud GET y devuelve la cadena resultante en una promesa. El caso de uso inicial de esta función es cargar un archivo de plantilla. Por ejemplo:

const { loadFile } = owl;
async function makeEnv() {
const templates = await loadFile("templates.xml");
// do something
}

EventBus

Es un EventBus simple, con la misma API que los elementos DOM habituales y un método trigger adicional para enviar eventos:

const bus = new EventBus();
bus.addEventListener("event", () => console.log("something happened"));
bus.trigger("event"); // 'something happened' is logged

validate

La función validate es una función que valida si un objeto determinado satisface un esquema específico. En realidad, Owl la utiliza para realizar la validación de propiedades. Por ejemplo:

validate(
{ a: "hey" },
{
id: Number,
url: [Boolean, { type: Array, element: Number }],
}
);
// throws an error with the following information:
// - unknown key 'a',
// - 'id' is missing (should be a number),
// - 'url' is missing (should be a boolean or list of numbers),

batched

La función batched crea una versión por lotes de una devolución de llamada, de modo que múltiples llamadas a ella dentro del mismo microtick solo darán como resultado una única invocación de la devolución de llamada original.

function hello() {
console.log("hello");
}
const batchedHello = batched(hello);
batchedHello();
// Nothing is logged
batchedHello();
// Still not logged
await Promise.resolve(); // Await the next microtick
// "hello" is logged only once