0

我有一个像这样的 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 我的方法是将每个结果标记存储在其单独的变量中。需要一些建议。

4

2 回答 2

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”。

于 2017-10-30T13:19:06.223 回答
0

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

于 2017-10-30T10:33:19.367 回答