backstory: en chessboardjs, carga el tablero con funciones de devolución de llamada para eventos específicos. El ajedrez mecánico que me da problema es el ascenso. Necesito retener mi devolución de llamada, pedirle a un usuario una pieza que quiera promocionar, verificar si es un movimiento válido y devolver ('snapback') o ejecutar el movimiento.
Solución estúpida: si solicito con clásico
promoPiece = prompt();
todo funciona, pero se ve un poco feo.
Solución fallida: pero cuando trato de crear una promesa que adjunta una devolución de llamada a mi elemento de superposición, para que el usuario haga clic en una pieza específica, fallo (necesito hacer que la función sea asíncrona para usar las promesas). Trato de obtener la pieza como
async function onDrop(args) { ..code.. promoPiece = await promoPrompt(); ..code.. if(invalid()) {return 'snapback'} }y la mecánica de promoción funciona, pero la instrucción return snapback no funciona porque ahora se devuelve la promesa en lugar de una cadena y no se acepta con chessboardjs... (Supuse que no profundicé en la fuente)
Pregunta: 1) ¿En qué difiere el aviso de mi solución? 2) ¿Cómo funciona? 3) ¿Cómo puedo crear un controlador de promoción personalizado para una devolución de llamada síncrona? 4) ¿Puedo usar promoPrompt.then(myResolve) sin hacer que onDrop() asíncrono?
prompt )prompt de envoltura, pero luego obtiene la apariencia nativa que no le gusta)Si desea una interfaz de usuario personalizada aquí, entonces la función de llamada debe poder manejarla de forma asíncrona.