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

298
Views
Espere a que la respuesta de WebHID esté lista

Estoy enviando datos al dispositivo de destino usando device.sendReport(reportID, dataBuffer) de WebHID , pero trato de leer la respuesta antes de que esté lista (es decir), la respuesta tarda en generarse.

Por ahora, al configurar el tiempo de espera de 10 ms, puedo obtener la respuesta. Me gustaría saber si hay alguna solución mejor para esto.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

No ha dicho cómo el dispositivo proporciona la respuesta, pero supongo que tiene la forma de un informe de entrada. En ese caso, la Promise devuelta por sendReport() no es particularmente interesante, sino que desea escuchar un evento de inputreport de entrada que se activará en HIDDevice . Si quieres puedes convertir esto en una Promise como esta,

 const response = new Promise((resolve) => { device.addEventListener('inputreport', resolve, { once: true }); }); await device.sendReport(...your data...); const { reportId, data } = await response;

Una vez recibida la respuesta se almacenará en data .

Tenga en cuenta que esto supone que el dispositivo solo genera informes de entrada en respuesta a una solicitud. Para un dispositivo con comunicaciones más complejas, es posible que desee tener un inputreport eventos de informe de entrada registrado en todo momento y procesar los informes de entrada en función de su ID de informe u otros factores. HID no admite ninguna contrapresión, por lo que si no tiene un inputreport eventos de informe de entrada registrado cuando el dispositivo envía un informe, se descartará.

about 4 years ago · Santiago Trujillo Report

0

Para este tipo de acción, debe usar código asíncrono. Al enviar/recibir cosas hacia o desde un servidor, esta acción es una 'Promesa' que es asíncrona.

Se verá así (usando la API fetch como ejemplo):

Con devoluciones de llamada (que son opcionales)

 myFunction = () => { fetch('POST', data) .then((response) => { console.log(response); }) .catch((error) => { console.warn(error); }); }

Con asíncrono/espera. Esto no se recomienda en la mayoría de los casos, ya que se supone que la solicitud tendrá éxito.

 myFunction = async () => { const response = await fetch('POST', data); console.log(response); }
about 4 years ago · Santiago Trujillo 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!