Ergebnis der Callback-Funktion übergeben/zurückgeben

Ich glaube, ich stoße auf ein Rückrufproblem, da die Rückgabe des Ergebnisses undefiniert lautet (obwohl es im Konsolenprotokoll korrekt angezeigt wird).

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

Ich kann das Callback-Ergebnis derzeit nicht an eine andere Funktion/Variable übergeben. Bitte helfen. Vielen Dank.

welches problem/fehler hast du? Sie scheinen returndas Ergebnis zu sein und es nirgendwo weiterzugeben
versuchen Sie alert(result), um zu sehen, ob es richtig erscheint
Ich werde in der Konsole undefiniert und wenn ich es alarmiere.
hast du web3.js oder MetaMask-injected eingebunden?<script src="https://unpkg.com/web3@1.0.0-beta.27/src/index.js"></script>

Antworten (1)

Dies ist ein häufiger Verwirrungspunkt für neue JavaScript-Entwickler. resultWenn Sie zu etwas anderem übergehen möchten , müssen Sie eine andere Funktion aufrufen. Z.B:

web3.eth.getBlockNumber(function (error, result) {
  otherFunction(result);
});

function otherFunction(result) {
  console.log("In otherFunction with: " + result);
}

Derzeit sind Sie nur returning result, was nur bedeutet, dass es an den Aufrufer Ihres Rückrufs zurückgegeben wird, was ist web3.eth.getBlockNumber(und es erwartet überhaupt keinen Rückgabewert vom Rückruf, also ignoriert es ihn).

ok, aber was ist die lösung?
Ich bin mir nicht sicher, was Sie fragen. Meine Antwort enthält Arbeitscode.