1

我在合约中有一个非常简单的solidity 函数MyContract

function getCount() view public returns (uint) {
    return myArray.length;
}

下面的javascript使用web3打印[object Promise]而不是计数?

MyContract.deployed().then(i => {
  var count = i.getCount.call();
  console.log(count); // print [object Promise]
})
4

1 回答 1

2

根据您的代码:

MyContract.deployed().then(i => {
  var count = i.getCount.call();
  console.log(count); // print [object Promise]
})

MyContract.deployed() 将合约部署到 eth 网络。矿工验证并将合约代码添加到区块链需要时间。成功完成此过程后, then() 将调用。

来到 i 是部署的合约对象,使用i variable 你可以访问合约。

i.getCount.call().then(val =>{ console.log("Value")}) //instance.getCount().call will returns promise. So 

call() 是异步方法,即它不会等待完成该步骤。当您当时获得数据时, then() 将调用。

或者干脆调用instance.getCount()你的执行将暂停,直到你得到结果。

我的选择是使用 then()

于 2018-02-05T08:45:53.783 回答