Was passiert , wenn wir " callback
" als Schlüsselwort in einer Funktion verwenden? Und wann müssen wir es verwenden? und was passiert, wenn wir es nicht verwenden? Zum Beispiel im folgenden JavaScript-Code:
function signPayment(recipient, amount, nonce, contractAddress, callback) {
var hash = "0x" + ethereumjs.ABI.soliditySHA3(
["address", "uint256", "uint256", "address"],
[recipient, amount, nonce, contractAddress]
).toString("hex");
web3.personal.sign(hash, web3.eth.defaultAccount, callback);
}
Callback ist im Grunde eine Funktion, die an andere Funktionen übergeben und dort ausgeführt wird, wenn Sie diesen "Callback" aufrufen. Ein sehr einfaches Beispiel finden Sie in der Mozilla-Dokumentation .
Wenn Sie keinen Rückruf übergeben, kann dies je nach Funktionscode Ihr Programm beeinflussen oder auch nicht, da der Rückruf null ist.
Einige web3-Methoden sind asynchron und erfordern einen Rückruf.
Die Callback-Funktion wird ausgeführt, sobald die ursprüngliche Funktion abgeschlossen ist, und nimmt einen Transaktions-Hash oder ähnliches als Argument.
Sie können Rückrufe vollständig vermeiden, indem Sie ein async/await-Muster verwenden.
Zum Beispiel:
async function signPayment(recipient, amount, nonce, contractAddress) {
var hash = "0x" + ethereumjs.ABI.soliditySHA3(
["address", "uint256", "uint256", "address"],
[recipient, amount, nonce, contractAddress]
).toString("hex");
var signed = await web3.personal.sign(hash, web3.eth.defaultAccount);
console.log(signed);
}
Fragesteller
callback
vs.async
? DankeSoggiorno
Soggiorno
Fragesteller
.js
Datei gespeichert (Sie können den Inhalt dieser.js
Datei hier sehen .) Wenn ich diese Datei jedoch über ausführe,node filename.js
erhalte ich die Fehlermeldung, dass ich den Screenshot hier hochgeladen habe . Ich weiß nicht, wo ich falsch liege. Danke noch einmal.Soggiorno
Fragesteller
ethereumjs-abi
. Hier ist der Inhalt der Datei, die ich ausführe. Und hier ist die Fehlermeldung, die ich erhalte.ethereumjs-abi
Übrigens, wenn ich den in diesem Code verwendeten installieren möchte , erhalte ich diese Meldung . Ich bin mir nicht sicher, ob es richtig installiert ist. DankeSoggiorno
Fragesteller
var abi = require('ethereumjs-abi')
den Code oben hinzugefügt ([HIER] ( ibb.co/imjwPy )). Ich erhalte jedoch denselben Fehler ([HIER]( ibb.co/bWvWrd )). DankeSoggiorno
Fragesteller
soliditySHA3
) Nochmals vielen DankSoggiorno
Fragesteller
sign
) habe ich auch hinzugefügtWeb3 = require("web3")
undweb3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
nochmals dankeFragesteller
web3.eth.personal.sign
stattdessen verwendetweb3.personal.sign
undsign
ist gelöst, aber der neue Fehler ist HIER: ibb.co/gAG2gd Nochmals vielen DankFragesteller
web3.eth.defaultAccount
? Wir brauchen keinendefaultAccount
Wert zu initiieren ? Danke