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.js
wird 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!
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 setInterval
und eine get
innerhalb der Timer-Funktion zu verwenden, um Ereignisse zu erfassen und die neuesten anzuzeigen.
Nulik
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.