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

98
Vistas
Obtenga la resolución de Promise desde una devolución de llamada separada

Estoy enviando datos a un dispositivo Bluetooth y las respuestas son manejadas por un oyente que se configura durante el proceso de conexión:

 device.connect().then(device => { device.registerResponseListener((data) => { // handle response } }

Tengo una función separada que envía datos al dispositivo:

 const sendData = (device, data) => { device.write(data); }

Mi pregunta es, ¿cómo puedo prometer este código? me gustaria poder hacer

 const sendData = (device, data) => { return new Promise((resolve, reject) => { device.write(data); // resolve...? }); }

Pero, ¿cómo obtengo la resolve en el oyente de respuesta de Bluetooth?

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

0

No sé qué API está utilizando, pero puede probar la API BluetoothRemoteGATTCharacteristic. Tiene el método writeValueWithResponse que devuelve Promise.

https://developer.mozilla.org/en-US/docs/Web/API/BluetoothRemoteGATTCaracterística

about 4 years ago · Juan Pablo Isaza Denunciar

0

La mejor solución posible en este caso, aunque aún no es la ideal, fue almacenar la función de resolve en una variable de mayor alcance:

 var sendDataResolve; device.connect().then(device => { device.registerResponseListener((data) => { sendDataResolve(data); } } const sendData = (device, data) => { return new Promise((resolve, reject) => { sendDataResolve = resolve; device.write(data); }); } ... sendData(device, "data") .then(result => { console.log("Got result",result); });

La advertencia es que NO se garantiza que las resoluciones de Promise se vinculen correctamente a la solicitud original. Esto SÓLO funciona con una solicitud a la vez.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si te entendí bien entonces puedes hacerlo así

 const sendData = async (device, data) => { const response = await device.write(data); await Promise.all(device.responseListeners.map(listener => listener(response))) }
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