Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
Variables no definidas llamadas desde una función

Tengo 2 funciones que se llaman dentro de generateActivity, devuelve una promesa, sin embargo, cuando consola. Las registro dice indefinido. Creo que se debe a la forma en que se realizan las funciones getSessionUser y getSessionTimer.

 function getSessionUser() { win.webContents.executeJavaScript('sessionStorage.getItem("user");', true) .then(result => { if(result) { return JSON.parse(result); } }); } function getSessionTimer() { win.webContents.executeJavaScript('sessionStorage.getItem("timer");', true) .then(result => { if(result) { return JSON.parse(result); } }); } function generateActivity() { var user = getSessionUser(); var timer = getSessionTimer(); console.log(user); // undefined but should not be console.log(timer); // undefined but should not be if(user && timer) { activity.user = user; activity.timer = timer; var data = { activity: activity } axios.post("http://creaz:81/xorix/api/desktop/save_activity", data, { headers: headers }) .then((response) => { //console.log(response); }) .catch((error) => { //console.log(error); }) activity.is_mouse = activity.is_keyboard = 0; } else { console.log('not logged in or no timer is running'); // says undefined for both user and timer variable } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que puedes usar async/await para esto. Hacer generarActividad asíncrona:

 async function generateActivity() { … }

Y luego espere a que las funciones devuelvan sus resultados:

 const user = await getSessionUser(); const timer = await getSessionTimer();

Espero que esto ayude.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su getSessionUser() y getSessionTimer() también necesitan devolver una promesa. Ambas funciones son funciones asíncronas, pero su código dentro de generateActivity las trata como funciones síncronas. Debe esperar a que se resuelva la promesa antes de poder consolar. registrar el resultado.

 function getSessionUser() { return win.webContents.executeJavaScript('sessionStorage.getItem("user");', true) .then(result => { if(result) { return JSON.parse(result); } }); } function getSessionTimer() { return win.webContents.executeJavaScript('sessionStorage.getItem("timer");', true) .then(result => { if(result) { return JSON.parse(result); } }); }

Luego, dentro de generateActivity() , debe esperar a que se resuelva la promesa. Podemos usar las palabras clave async await para hacer esto más fácil.

 async function generateActivity() { var user = await getSessionUser(); var timer = await getSessionTimer(); // Now we wait for the async calls to resolve before continuing the execution inside this function. }

Dado que getSessionUser y getSessionTimer son independientes, podemos mejorar el fragmento de código anterior ejecutando ambas funciones al mismo tiempo, pero espere a que ambas promesas se resuelvan antes de continuar con el resto de la ejecución del código. (Dejo esto como un ejercicio/desafío para OP)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda