Web3js

web3.eth.getBlock 沒有被觸發

  • April 26, 2020

基本上,我想獲取第一種方法的回調結果以獲取每個索引值,並將其傳遞給第二種方法以掃描該值,在這種情況下是一個乙太坊交易來獲取輸入值。問題是未觸發名為“cb”的回調。

程式碼:

var tx;

web3.eth.getBlock(6339515, function(err, result){
   for(var i = 0; i <= result.transactions.length; i++){
       tx = result.transactions[i];
       getInputTransaction(tx)
       .then(function() {} )
       .catch(function(error) {
           console.log('error: \n' + err);
       });
   }
})

async function getInputTransaction(tx) {
   web3.eth.getTransaction(tx, function(err, cb){
       console.log('got here');
       let decodeInput = web3.utils.hexToAscii(cb.input);
       decodeInput = decodeInput.split("_").pop();
       if(!err){
           console.log(cb);
           console.log('\nInput decoded: ' + '\u001b[1;32m' + decodeInput + '\u001b[0m');
       }else{
           console.log('error: ' + error);
   }}
   )
}

我在這裡想念什麼?

傳遞給的回調getBlock在 web3.js v1.2.1 下觸發得很好。

您可能想要解決的一些附帶問題:

  1. 全域var tx似乎是多餘的
  2. 函式getInputTransaction不需要聲明async
  3. 在傳遞給的回調中getBlock,確保err == null在使用之前result
  4. 在傳遞給的回調中getTransaction,確保err == null在使用之前cb

引用自:https://ethereum.stackexchange.com/questions/82806