Я пытаюсь построить простой двойной договор условного депонирования. У меня есть перечисление для состояния:
enum State { Created, Locked, Inactive }
State public state;
Когда я пытаюсь взаимодействовать с контрактом через консоль трюфеля, я могу вернуть тип enum:
но я не понимаю, как делать сравнения с возвращаемым значением. Может кто-нибудь сказать мне, как сравнить возвращаемое значение?
Это BigNumber: https://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js .
Попробуйте это, чтобы понять идею:
> var stateReadable = state.toString(10);
> stateReadable
Надеюсь, поможет.
Обновление ... это будет немного грубо, потому что это изображение, а не код, с которым я могу поиграть. Вы возвращаете обещание с этой частью. return instance.state()
. Теперь вы должны что-то сделать с этим обещанием.
var state =
является ошибкой, потому что вы не хотите, чтобы это было обещанием.
Я собираюсь немного разбить его для удобства чтения и иллюстрации.
Пытаться:
> var state;
> var contract;
> Escrow.deployed().then(function(instance) { contract = instance; });
> contract.state().then(function(value) { state = value) });
> state.toString(10);
По сценарию я бы, вероятно, связал их в цепочку, чтобы события не развивались слишком быстро. Дождитесь экземпляра, затем запросите функцию.
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);
});
Видите, как обещания начинают формировать цепочку? Вы можете продолжать возвращать обещания, затем закрыть блок и добавить, .then(...
чтобы передать результаты на следующий шаг. Другими словами, если вам нужно еще одно взаимодействие с контрактом после my console.log()
, вы должны выполнить return
функцию, а затем продолжить at });
с другим .then()
.
Просто по звуку, надеюсь, я не ошибся в синтаксисе.
Надеюсь, поможет.
Непоче
Роб Хитченс
Непоче