Estoy tratando de construir un contrato simple de doble depósito en garantía. Tengo una enumeración para el estado:
enum State { Created, Locked, Inactive }
State public state;
Cuando trato de interactuar con el contrato a través de la consola de trufas, puedo obtener el tipo de enumeración para devolver:
pero no entiendo cómo hacer comparaciones con el valor devuelto. ¿Alguien puede decirme cómo comparar el valor devuelto?
Es un BigNumber: https://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js
Prueba esto para hacerte una idea:
> var stateReadable = state.toString(10);
> stateReadable
Espero eso ayude.
Actualización... esto será un poco difícil porque es una imagen y no un código con el que puedo jugar. Estás devolviendo una promesa con esta parte. return instance.state()
. Ahora, tienes que hacer algo con esa promesa.
var state =
es un error, porque no quieres que sea una promesa.
Voy a desglosarlo un poco para mejorar la legibilidad y la ilustración.
Intentar:
> var state;
> var contract;
> Escrow.deployed().then(function(instance) { contract = instance; });
> contract.state().then(function(value) { state = value) });
> state.toString(10);
Como algo con guión, probablemente los encadenaría para que las cosas no avancen demasiado rápido. Espere la instancia, luego consulte la función.
var state;
var escrow; // more conventional naming
Escrow.deployed()
.then(function(instance) {
escrow = instance;
return escrow.state(); // this way we know it won't get called until the instance returns
})
.then(function(response) { // now we do something with the promise we returned.
state = response;
console.log(state.toString(10);
});
¿Ves cómo las promesas empiezan a formar una cadena? Puede seguir devolviendo promesas, luego cerrar el bloque y agregarlo .then(...
para pasar los resultados al siguiente paso. En otras palabras, si necesita otra interacción con el contrato después de my console.log()
, haría return
la función y luego continuaría });
con otro .then()
.
Solo siguiendo el sonido aquí, así que espero no haber fallado en la sintaxis.
Espero eso ayude.
Nepoche
Rob Hitchens
Nepoche