Wie kann ich mit web3.js 1.0.0 Beta die neueste Blocknummer auf einer Webseite ausgeben?

In einer früheren Version von web3js war es nur

document.write(web3.eth.blockNumber + "<br><br>");

und es wird in dem Abschnitt der Seite ausgegeben, in dem sich das Skript befindet, wie im Infura-Beispiel-Tutorial hier zu sehen ist

Aber in v1.0.0 gibt es "undefiniert" zurück und zeigt das auf dem Bildschirm an.

aus der Dokumentation ist die neue Methode getBlockNumber

web3.eth.getBlockNumber([callback])

Ich habe versucht

               web3.eth.getBlockNumber(function (error, result) {
                        if(!error)
                        {
                            console.log(result);
                            document.write(result);
                        }
                        else{
                            console.log(error);
                        }
                });

Aber das hat einfach alles andere HTML von der Seite entfernt und die Blocknummer geschrieben.

Ich möchte nur die aktuelle Blocknummer an einem bestimmten HTML-Element auf dem Bildschirm ausgeben können. Kann mir jemand helfen?

Ich kenne kein Javascript, also ist web3 offensichtlich ein bisschen ein Kampf für mich. Ich habe immer noch Probleme, mich mit Versprechungen, Rückrufen usw. zu befassen.

Grundsätzlich denke ich, dass mein Problem nicht versteht, warum diese Methode einen Rückruf erfordert oder was der Rückruf sein soll.

Ich würde wirklich jede Hilfe schätzen. Danke Leute.

Antworten (1)

  1. Erstellen Sie ein div-Element (in diesem Fall ist es ein div mit der ID „blockNumber“) in Ihrer index.html-Datei, um die Blocknummer zu speichern:

    <div id="blockNumber"></div>
    
  2. Versuchen Sie dann Folgendes in Ihrem Front-End-JS-Code:

    setInterval(function () {
    
      // block number of latest mined block
      web3.eth.getBlockNumber().then(data => {
        document.getElementById('blockNumber').innerHTML = data;
      });
    
    }, 3000);
    

Hinweis: Wenn Sie nur einmal die neueste Blocknummer erhalten möchten, setzen Sie den obigen Code in eine normale Funktion ohne Zeitintervall.