Перечисление всех транзакций по счету за день с web3.js

У меня проблема с перечислением всех транзакций, совершенных аккаунтом за 24 часа. Я могу напечатать все транзакции за 24 часа, и я думаю, что у меня есть правильный код, но я не могу вернуть этот список из функции (вероятно, из-за недостатка знаний о обратных вызовах / обещаниях / ожиданиях), поэтому мне нужна помощь здесь!

Этот код печатает все транзакции учетных записей на консоли, и я хотел бы сохранить эту информацию в списке, а затем вернуть список.

getTransactions: () => {
  var tra = [];
  web3.eth.getBlockNumber((error, latestBlock) => {
    for(var i = 0; i <= latestBlock; i++){
      web3.eth.getBlock(i, true, (error, block) => {
        if(block != null && block.transactions != null) {
          block.transactions.forEach((transaction) => {
            var transactionTime = new Date(block.timestamp * 1000);
            var sub = Date.now() - transactionTime;
            // 86400000ms is one day
            if (account == transaction.from
                && (Date.now() - transactionTime) < 86400000) {
              tra.push(transaction);
              console.log("from: " + transaction.from + "\n" 
                + "to: " + transaction.to + "\n"
                + "time: " + transactionTime + "\n"
                + "sub (epoch): " + sub + "\n");
            }
          });
        }
      });
    }
  });
}

Я пытался сделать какой-то список, но все, что я получаю, это список, полный обещаний, и данные находятся в rejectionhandler0. Что я делаю не так? Что мне нужно сделать, чтобы получить данные от rejectionhandler0?

getBlocks: () => {
    return web3.eth.getBlockNumber()
    .then((x) => {
      var txs = [];
      for(var i = 0; i < x; i++) {
        txs.push(web3.eth.getBlock(i));
      }
      return txs;
    })
    .catch((error) => {
      console.log(error);
    });
  }

0 ответов

Другие вопросы по тегам