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

77
Vistas
Encuentre el resultado máximo de varias solicitudes HTTP

esta es mi primera publicación de stackoverflow. En esta aplicación NodeJS, el objetivo es obtener el valor máximo de memoria disponible de un grupo de IP. Sé que puedo usar la función getMemory con una devolución de llamada, pero no sé cómo usarla en este escenario.

 decide(){ for(var i=0;i < raspberrys.length;i++ ){ let ip = raspberrys[i]; let freeSpace = this.obtainMemory(ip); console.log(freeSpace); } },obtainMemory(ip){ https.get('http://'+ip+':3030/memory', (response)=>{ let data=''; response.on('data', (chunk) =>{ data+=chunk; }); response.on('end',()=>{ let obj = JSON.parse(data); console.log(obj.free ); return obj.free; }) }).on('error',(error)=>{ console.log(error); }); }

Por ejemplo si tengo 2 raspberrys de 2GB y 1MB, tengo que devolver la IP de la primera raspberry. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Solo para hacerlo más fácil, transformaría el get en una promesa. Puede hacerlo instalando alguna biblioteca como got , node-fetch o axios . Si tiene acceso al node 17.5 , puede usar la búsqueda, ahora nativa, puede ver cómo aquí . Hice una versión prometida de get también:

 const get = (url) => { return new Promise((resolve, reject) => { let data = "" const req = https.get(url, (res) => { res.on("data", (chunk) => (data += chunk)) res.on("error", (err) => reject(err)) res.on("end", () => { data = JSON.parse(data) return resolve(data) }) }) req.on("error", reject) req.end() }) }

Puede encontrar una versión más completa aquí .

usándolo tu código:

 async function decide() { // get all raspberrys free memory const freeMemories = await Promise.all(raspberrys.map(obtainMemory)) // find which one has the biggest memory const { ip } = freeMemories.reduce( (prev, curr) => { if (prev.memory < curr.memory) prev = curr return prev }, { memory: 0 } ) console.log(ip) } async function obtainMemory(ip) { const ipAddress = `http://${ip}:3030/memory` const { free } = await get(ipAddress) // using the get function that I defined return { ip, free } }
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