La tarea es devolver datos de la función getData a la función principal.
function getData(){ const https = require('https') const url = "https://...../api/movies"; https.get(url, res => { let data = ''; res.on('data', chunk => { data += chunk; }); res.on('end', () => { data = JSON.parse(data); console.log(data); //How can I return this data to main function? }) }).on('error', err => { console.log(err.message); }) } function main(){ console.log(getData()); }No puedo acceder a los datos o imprimir datos en la función principal
Creo que ya tienes la respuesta en tu comentario '//¿Cómo puedo devolver estos datos a la función principal?'.
... res.on('end', () => { data = JSON.parse(data); console.log(data); return data; }) ...Entonces, el valor de retorno de su función getData ahora debería ser el json-data analizado y ser accesible en la función principal.
Crearía una variable para guardar el valor que desea devolver
const https = require('https') function getData() { let ret = null; const url = "https://...../api/movies"; https.get(url, res => { let data = ''; res.on('data', chunk => { data += chunk; }); res.on('end', () => { ret = JSON.parse(data); }) }).on('error', err => { console.log(err.message); }) return ret; } function main() { console.log(getData()); }Lo que podría hacer es envolver su solicitud en una Promise . Desearía devolver esta promesa y esperar a que se cumpla:
function getData() { const url = "https://...../api/movies"; return new Promise((resolve, reject) => { const req = https.get(url, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { resolve(JSON.parse(data)); }); }); req.on('error', (err) => { reject(err); }); req.end(); }); } function main() { getData().then(data => { console.log("Response:", data); }, error => { console.error(error); }); } Además, puede hacer que su función main sea async y usar await para obtener la respuesta:
async function main() { const data = await getData(); console.log(data); } // Start an IIFE to use `await` at the top level. See: https://stackoverflow.com/a/14220323/7661119 (async () => { await main() })();