Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

96
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!