Buenos días!
El problema que planteo puede ser algo confuso aunque lo voy a explicar lo mejor que pueda:
He desarrollado una función que implementa la típica línea "#include" en Javascript
:
algo así como:
Código:
Include("otroArchivo.js");
El problema es que dicha función es sincrona y cuando hay muchos archivos, la carga se hace lenta.
He hecho pues la modificación del Include para que sea asíncrona.
Problema: imaginemos lo siguiente:
Código:
Include("archivoFuncionA.js");
var i = A();
Obviamente la segunda línea falla puesto que A no ha terminado la carga asíncrona y por lo tanto no existe aún.
Mi idea para solucionar esto es una fórmula que se usa mucho en OpenGL: Encerrar las instrucciones en un bloque:
Código:
Include.BeginAsync();Include("archivoFuncionA.js");
Include("archivoFuncionB.js");
Include.EndAsync();
La función BeginAsync es trivial, pero la EndAsync es otra cosa.
De momento la he implementado con espera activa, es decir, comprobando cada 0.1s si todos los archivos que empezaron a cargarse ya finalizaron/cancelaron.
Las esperas activas no me gustan, la question que me preocupa ahora es pues si existe alguna forma (sea o no muy correcta para Javascript) para hacer en la función "EndAsync" una espera y que sea el evento de fin de carga el que reanude EndAsync.
En un lenguaje imaginario, sería algo asi:
Código:
Funcion EndAsync(){Wait(10);
}
Funcion onLoadedCallback(){EndAsync.continue();
}
Es decir, la función evento al terminar de incluir el código cancela la espera de la función EndAsync, reanudando así la ejecución normal del código.
Muchas gracias de antemano por las aportaciones.