Entonces, tengo un archivo data.js (el módulo personalizado) con el siguiente código aproximado (para no perder el tiempo entendiendo todo el código):
let data; async function(){ data = await something; //the await returns an array, so data has an array } module.exports={data} // I am exporting the data arrayAhora estoy requiriendo el módulo en app.js
data=require("./data.js"); //Now I am using express to send json data to a url app.get("/home",(req,res)=>{ res.json(data); });Así que ahora, si abro la url (localhost: 5000/home), obtengo:
{}Ahora, si modifico data.js para
let data=[]; //I made data an empty array first async function(){ data = await something; //the await returns an array, so data has an array } module.exports={data} // I am exporting the data arrayAsí que ahora, si abro la url (localhost: 5000/home), obtengo:
{"data":[]}Ahora si modifico data.js de nuevo
let data=[]; //I made data an empty array first async function(){ data.push(await something); //the await returns an array, and I am pushing into the empty array } module.exports={data} // I am exporting the data arrayAsí que ahora, si abro la url (localhost: 5000/home), finalmente obtengo:
{"data":[some data]} //This is how I wantEntonces, quiero entender cuál es la diferencia entre los tres archivos data.js y cómo exactamente requiere trabajar con el código asíncrono en el módulo personalizado. Si consuelo. log (datos) en el archivo app.js, me quedo vacío, lo cual es comprensible, ya que está sucediendo sincrónicamente antes del código asincrónico del módulo personalizado. Pero, por favor, ¿alguien podría explicar por qué los dos primeros métodos de data.js no funcionan?
¡Perdón por la larga pregunta!