【问题标题】:Store contract results tag in a variable将合约结果标签存储在变量中
【发布时间】:2018-04-11 02:30:27
【问题描述】:

我的 web3 常量看起来像这样。

const test = contract_instance.methods.getPost(15).call().then(console.log);

这样返回结果。

Result {
  '0': '2017-08-28',
  '1': '19:18:04.986593',
  '2': '07:17:00',
  '3': '11112323',
  '4': '12',
  date: '2017-08-28',
  login_time: '19:18:04.986593',
  logout_time: '07:17:00',
  login_device_id: '11112323',
  user_id: '12' }

现在,当我想通过 console.log(test[0]); 控制单个标签时,这将返回 undefined 我的方法是将每个结果标签存储在其单独的变量中。需要一些建议。

【问题讨论】:

    标签: ethereum solidity contract web3js go-ethereum


    【解决方案1】:

    then() 将函数作为参数,该函数在履行承诺时被调用。然后,您可以将值添加到数组中,例如:

    var results = []
    contract_instance.methods.getPost(15).call().then(function(value){
       console.log(value)
       results.push(value)
    });
    

    results[0] 将成为您正在寻找的结果对象,results[0]['0'] 将为您提供例如日期“2017-08-28”。

    【讨论】:

    • 是的,这是在实例内部工作,但如果我想在实例外部控制它,它不会显示数据。只是显示一个空的花括号。非常感谢,亲爱的。
    【解决方案2】:

    通过使用 .then(...) 链接调用,返回的值是 Promise 类型,而不是您期望的 Result 对象(以及写入控制台的内容),并且无法通过索引访问。 请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then 了解更多信息。

    【讨论】:

    • 那么,可以接近目标的确切方法是什么。我是 web3、节点和合约的新手
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多