¿Cómo configurar un temporizador en el observador de eventos web3? [cerrado]

Tengo un observador de eventos web3 configurado en un archivo Javascript como tal:

var a;
contract.events.allEvents(function(error, event){
   if (event.event == "Set") {
        a = event.returnValues['val'];
   }
});

Cuando ejecuto este archivo, node eventWatcher.jsse repetirá indefinidamente y ejecutará el código dentro de mis condicionales cada vez que ocurra un evento.

Sin embargo, quiero mantener un temporizador al mismo tiempo de modo que cuando pase una cierta cantidad de tiempo, pueda desactivar el valor de a. es posible?

¡Gracias!

normalmente en JavaScript setTimer()se usa una función. ¿No te funciona esta función? Corríjame si me equivoco, pero esta pregunta es más sobre Javascript y no sobre Ethereum en sí.

Respuestas (1)

Para establecer un evento de tiempo, puede usar un temporizador de JavaScript normal.

var a;
contract.events.allEvents(function(error, event){
    if (event.event == "Set") {
        a = event.returnValues['val'];
        window.setTimeout(function() {
            a = '';
        }, (60 * 1000)); // clear a in 60 seconds
    }
});

Si solo desea hacer esto una vez en el temporizador en lugar de una vez cada vez que ocurra el evento, puede preferir poner el temporizador en un bucle setIntervaly usar una getfunción dentro del temporizador para capturar eventos y mostrar el más reciente.