Creo que están sucediendo algunas cosas asincrónicas que no puedo entender. Por favor, díganos cómo puedo resolver esto con async-await si es posible.
mi código:
const {spawn} = require('child_process') const getWeatherReport = (location) => { let dataToSend, result const python = spawn('python', [__dirname+'\\weathergetter.py', location.toString()]) python.stdout.on('data', (data) => { console.log('Pipe data from python script ...'); dataToSend = JSON.parse(data.toString().replace(/\'/g, '\"')); // console.log(dataToSend) }) python.stderr.on('data', data => { console.error(`stderr: ${data}`) }) python.on('close', (code) => { console.log(`child process close all stdio with code ${code}`); // console.log(dataToSend) }) return dataToSend } var wea = getWeatherReport("kolkata") console.log(wea)Salida :
indefinido
Canalizar datos desde el script de python...
proceso hijo cerrar todo stdio con código 0
Quiero que la función devuelva un json object que está asignado a dataToSend . Aquí estoy trabajando con un script de python.
el script de python no tiene ningún problema. Cuando hago console.log(dataToSend) dentro python.stdout.on() y python.on() como se comentó en el código , los objetos json se imprimen en la consola. Pero no puedo hacer que la función devuelva el objeto json .