Wie stelle ich einen Timer im Web3 Event Watcher ein? [geschlossen]

Ich habe einen Web3-Ereignisbeobachter in einer Javascript-Datei wie folgt eingerichtet:

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

Wenn ich diese Datei damit ausführe, node eventWatcher.jswird sie auf unbestimmte Zeit wiederholt und der Code wird jedes Mal in meinen Bedingungen ausgeführt, wenn ein Ereignis auftritt.

Ich möchte jedoch gleichzeitig einen Timer behalten, sodass ich nach Ablauf einer bestimmten Zeit den Wert von aufheben kann a. Ist das möglich?

Danke!

normalerweise setTimer()wird in JavaScript eine Funktion verwendet. Funktioniert diese Funktion bei dir nicht? Korrigieren Sie mich, wenn ich falsch liege, aber diese Frage bezieht sich mehr auf Javascript und nicht auf Ethereum selbst.

Antworten (1)

Um ein Zeitereignis festzulegen, können Sie einfach einen normalen JavaScript-Timer verwenden.

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

Wenn Sie dies nur einmal auf dem Timer tun möchten und nicht einmal, wenn das Ereignis eintritt, können Sie es vorziehen, den Timer mit in eine Schleife zu versetzen setIntervalund eine getinnerhalb der Timer-Funktion zu verwenden, um Ereignisse zu erfassen und die neuesten anzuzeigen.