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

256
Vistas
¿Cómo obtener datos resueltos de la función Promise esperando?

Quiero obtener información sobre el uso de la CPU. Usé la función setTimeout para obtener la información.

Cuando uso let result = getCPUUsage() la consola muestra

getCPUUsage()>> Promise { <pending> }

entonces si hago la línea como let result = await getCPUUsage() , entonces la consola emitió un error y mostró

SyntaxError: await is only valid in async function

Quiero hacer ese result valioso como JSON {avg:<0~100>}. ¿Podría decirme cómo obtener datos JSON resueltos de Promise y hacer que el result sea el JSON resuelto?

 const os = require("os"); let result = getCPUUsage() // or >> let result = await getCPUUsage() console.log('getCPUUsage()>>', result) //Create function to get CPU information function cpuAverage() { //Initialise sum of idle and time of cores and fetch CPU info let totalIdle = 0, totalTick = 0; let cpus = os.cpus(); //Loop through CPU cores for(let i = 0, len = cpus.length; i < len; i++) { //Select CPU core let cpu = cpus[i]; //Total up the time in the cores tick for(type in cpu.times) { totalTick += cpu.times[type]; } //Total up the idle time of the core totalIdle += cpu.times.idle; } //Return the average Idle and Tick times return {idle: totalIdle / cpus.length, total: totalTick / cpus.length}; } // fetch cpu info function getCPUUsage() { return new Promise(async (resolve, reject) => { let data = {avg : 0} try { //Grab first CPU Measure let startMeasure = cpuAverage(); //Set delay for second Measure const wait = ms => new Promise(resolve => setTimeout(resolve = () =>{ //Grab second Measure let endMeasure = cpuAverage(); //Calculate the difference in idle and total time between the measures let idleDifference = endMeasure.idle - startMeasure.idle; let totalDifference = endMeasure.total - startMeasure.total; //Calculate the average percentage CPU usage percentageCPU = 100 - ~~(100 * idleDifference / totalDifference); }, ms)); await wait(100) console.log(percentageCPU + "% CPU Usage."); data.avg = percentageCPU resolve(data) } catch (e) { console.log('getCPUUsage error:', e); resolve(false); } }) }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe estar dentro de una función asíncrona para usar await .
A menos que esté utilizando ESM con async de nivel superior. No está permitido usar await en el nivel superior del módulo.
Aquí está la solución

 (async function() { let result = await getCPUUsage(); // ... })()
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