从JavaScript调用solidity函数get [object promise]?

vltsax25  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(225)

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

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]
})
baubqpgj

baubqpgj1#

根据您的代码:

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

deployed()将合约部署到eth网络。矿工需要时间来验证并将合同代码添加到区块链中。成功完成此过程后,将调用then()。
接下来是部署的合约对象,使用i variable可以访问合约。

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

call()是异步方法,即它不会等待完成步骤。当你在那个时候得到数据时,then()将被调用。
或者简单地调用instance.getCount(),您的执行将暂停,直到您获得结果。
我的选择是使用then()

相关问题