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á listoloadFile
: carga un archivo (útil para plantillas)EventBus
: un EventBus simplevalidate
: una función de validaciónbatched
: 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 loggedbatchedHello();// Still not logged
await Promise.resolve(); // Await the next microtick// "hello" is logged only once