Estoy trabajando en un bot y quiero establecer el estado de un botón de habilitado a deshabilitado.
aquí, estoy confundido como si debería usar setTimeout() para deshabilitar el botón después de 20 segundos o dejarlo como está. Como setTimeout() se llama cada vez que el usuario usa el comando "!compras".
setTimeout(() => { row.components[0].setDisabled(true); row.components[1].setDisabled(true); row.components[2].setDisabled(true); sentMessage.edit({ content: 'You cannot interact with buttons now!', components: [row], }); }, 20000);Después de buscar en Google, descubrí que setTimeout() funciona de manera asíncrona, lo que significa que si he procesado 1 como respuesta de mis bots de discordia principales, el proceso 2, el proceso 3 y el proceso 4 son setTimeout(), entonces node.js no lo hará. ejecute todas estas operaciones en paralelo; en su lugar, ejecutará el proceso 1 si el proceso 2 está obteniendo o enviando datos, y viceversa.
P0) ¿Lo que encontré es incorrecto o falta información?
P1) Entonces, ¿se recomienda en este escenario usar setTimeout()?
P2) ¿SetTimeout() se combinará con el tiempo o no?
P3 ¿Habrá algún problema de rendimiento debido a setTimeout()?
Creo que encontraste buena información, pero es posible que no la entiendas completamente.
Acerca de la naturaleza asíncrona de setTimeout() de MDN
setTimeout() es una función asíncrona, lo que significa que la función del temporizador no pausará la ejecución de otras funciones en la pila de funciones. En otras palabras, no puede usar setTimeout() para crear una "pausa" antes de que se active la siguiente función en la pila de funciones.
Por lo tanto, su setTimeout() no debería bloquear otras funciones.
Respondiendo a otras preguntas:
Creo que el uso de setTimeout() aquí es correcto.
El setTimeout no debe combinarse con el tiempo: cada setTimeout obtiene un ID de tiempo de espera único y se devuelve como un valor entero positivo de la función setTimeout().
No debería haber problemas de rendimiento.