Estoy usando node.js para ejecutar un script de JavaScript simple que prueba el acceso a la cadena de bloques rinkeby usando un punto final de infura. en concreto, está consultando el saldo de mi domicilio.
En el código si invoco:
console.log(web3.eth.getBalance(address));
solo devuelve la Promesa, es decir
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined }
Si por el contrario llamo:
console.log(web3.eth.getBalance(address, function (error, result) { }));
devuelve tanto la Promesa como el saldo de la dirección, es decir.
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined }
18750000000000000000
Realmente no entiendo por qué imprime la Promesa en absoluto. Simplemente quiero que devuelva el valor solo, es decir, 18750000000000000000
¿Cómo puedo lograr esto y realmente necesito especificar el function (error, result) { }
parámetro opcional para todas las llamadas a la función web3 solo para que me devuelva los datos que necesito?
gracias
intente con algo a lo largo de las líneas de:
const get_eth_balance = async (web3, account) => {
const balance = await web3.eth.getBalance(account);
return balance;
};
get_eth_balance(web3, account);
Las palabras clave principales aquí son async/await , que hacen que el código parezca mucho más sensato de lo que sería mediante el uso de devoluciones de llamada.
Si no recuerdo mal, la versión web3 actual (v1.0) no admite operaciones sincrónicas. Si desea funciones síncronas (sin promesas o async/await), puede instalar la versión anterior haciendo lo siguiente:
npm install web3@0.20
const Web3 = require('web3')
const web3 = new Web3(new Web3.providers.HttpProvider('https://rinkeby.infura.io'))
const address = '0x966e42aA4E7368818517a93656362C30d8E4d5fE'
const balance = web3.eth.getBalance(address)
console.log(balance.toNumber())
usuario2061575
Tudor Constantino
web3.eth.getBalance(account).then( balance => {console.log(balance)} )