Sé que se han hecho preguntas muy similares, pero no puedo encontrar una que se ajuste exactamente a mi problema; siéntase libre de señalarme de esa manera si hay alguna.
sendSteamAuthTicket: () => { return new Promise((resolve, reject) => { greenworks.getAuthSessionTicket(function(ticket) { console.log('Successfully retrieved Steam API User Auth Ticket.') console.log(ticket.ticket.toString('hex')) resolve(ticket.ticket.toString('hex')) }, function(e) { throw e }) }) }Básicamente, esto devuelve una Promesa interminablemente pendiente, lo que me lleva a creer que no puedo resolver una Promesa desde una devolución de llamada anidada como esta. Desafortunadamente, no puedo enviar los datos a través de una función adicional porque electron no te permitirá interactuar con el navegador de esa manera.
¿Es posible hacer lo que estoy tratando de hacer aquí? por ejemplo, obtener más o menos un valor Promesa retrasado dentro de esta única función?
Muy bien, lo descubrí, perdón por la pregunta redundante, me he estado golpeando la cabeza con esto durante algunas horas. Aparentemente, escuchar que la sintaxis de Promise era correcta fue suficiente para lograrlo.
El paquete greenworks se estaba importando incorrectamente (o, más bien, correctamente, según sus documentos, pero necesitaba una ruta de archivo directa)
Está un poco desactualizado, así que no estaba seguro de por qué al principio.
No hay nada de malo en la forma en que llamas a resolve . Si se llama a la devolución de llamada, también se resolve , a menos que ticket sea nulo o similar. Supongo que Greenworks está llamando a la devolución de llamada de error y luego no vuelve a lanzar su error lanzado. Prueba a reject(e) en lugar de throw e .