Как установить таймер в наблюдателе событий web3? [закрыто]

У меня есть наблюдатель событий web3, настроенный в файле Javascript как таковой:

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

Когда я запускаю этот файл, node eventWatcher.jsон будет бесконечно зацикливаться и запускать код в моих условиях каждый раз, когда происходит событие.

Однако я хочу одновременно поддерживать таймер, чтобы по прошествии определенного времени я мог сбросить значение a. Это возможно?

Спасибо!

обычно в JavaScript setTimer()используется функция. Эта функция у вас не работает? Поправьте меня, если я ошибаюсь, но этот вопрос больше касается Javascript, а не самого Ethereum.

Ответы (1)

Чтобы установить событие времени, вы можете просто использовать обычный таймер JavaScript.

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
    }
});

Если вы хотите сделать это только один раз на таймере, а не один раз, когда происходит событие, вы можете предпочесть поместить таймер в цикл setIntervalи использовать getвнутреннюю функцию таймера для захвата событий и отображения самых последних.