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

95
Vistas
Promise función que no sale

Estoy intentando util.promisify el paquete bonjour npm . Este es el caso de uso original descrito en los documentos:

 var bonjour = require('bonjour')() // advertise an HTTP server on port 3000 bonjour.publish({ name: 'My Web Server', type: 'http', port: 3000 }) // browse for all http services bonjour.find({ type: 'http' }, function (service) { console.log('Found an HTTP server:', service) })

Y esto no saldrá: bonjour.find() permanece abierto buscando servidores http.

Quiero prometer esto y resolver con éxito la promesa después de buscar servidores. Algo como:

 var bonjour = require('bonjour') const util = require('util'); // advertise an HTTP server on port 3000 bonjour().publish({ name: 'My Web Server', type: 'http', port: 3000 }) // promisify the 'find' function const find = util.promisify(bonjour().find.bind(bonjour())); (async () => { try { const content = await find({ type: 'http' }); console.log(content) } catch (err) { // It will always error, although, the value of 'err' is the correct content. console.error('There was an error'); } })();

Como se indica en los comentarios, siempre generará un error, aunque el valor de err sea el resultado deseado.

El proceso prometido espera un código de salida 0, que sospecho que no está sucediendo ya que el proceso no regresa. ¿Es esta la suposición correcta? ¿Alguien tiene alguna otra idea o solución para obtener mi promesa de no arrojar un error pero devolver el valor que se está arrojando actualmente?

¡Gracias!

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

0

Esto se debe a que la devolución de llamada de bonjour no cumple con la firma de devolución de llamada de Node.js (err, data) => {} . De hecho, la devolución de llamada de bonjour.find tiene el valor de éxito como primer parámetro. Podría envolverlo en una función de proxy como esta:

 function findWrapper(options, func) { function callback(data, err) { func(err, data); } return bonjour().find(options, callback); } const find = util.promisify(findWrapper);
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