如何在异步函数中访问双嵌套数组中的数据 - javascript?

能量学

我有一个数组,它有另一个包含我需要的数据的数组。

例如,我如何在 javascript 中访问“0x88def628c16651eb0d86be5ead3d738d0cb27fe947bb786c23105ac5d67a1bd0”?这是通过调用 var transakcije 来显示的。

我试过:

transakcije[0][0] 但这不是子数组的名称,

交易 [0],

for 循环(交易即交易)无济于事。

我搜索了熟悉的答案,但没有找到对我有用的答案。我感谢我收到的任何帮助。下面是显示在 console.log() 中的 var transakcije。


在此处输入图片说明


function getBlockchainTransactions(blockNumber){
    var tx = [];
    return new Promise(resolve => {
        for(var i=0; i<blockNumber; i++){
            web3.eth.getBlock(i, function(error, block){
            if(!error && block.transactions.length != 0){
                console.log(block.transactions);
                tx.push(block.transactions);
            }
        })
        }
            resolve(tx);
    });

}


async function msg() {
    const transakcije = await getBlockchainTransactions(blockNumber);
    console.log(transakcije);
}
布里奥舍耶

getBlock是异步的,因此您正在解析一个空数组,因为forjavascript 中的循环是同步的,但是您在其中使用了异步回调,并且is之前resolve调用 tx.push

我建议您采用递归异步方法,如下所示:

function getBlockchainTransactions(blockNumber){
    var tx = [];
    return new Promise(resolve => {
            // declare a recrusive async loop.
         var recursiveAsyncLoop = function(current, max) {
            // If the current index is exactly blockNumber, resolve.
          if (current === max) {
            resolve(tx);
          }
          // Otherwise, excute the operation on the actual block.
          else {
            var i = current;
            web3.eth.getBlock(i, function(error, block){
              if(!error && block.transactions.length != 0){
                console.log(block.transactions);
                tx.push(block.transactions);
                // once the operation is finished, increase the counter on the next call.
                recursiveAsyncLoop(current + 1, max);
              }
              // In cany case, regardless the above is true or false, continue.
              else recursiveAsyncLoop(current + 1, max);
            })
          }
         }
         // Begin the loop, from index 0 until blockNumber (excluded).
         recursiveAsyncLoop(0, blockNumber);
    });

}


async function msg() {
    const transakcije = await getBlockchainTransactions(blockNumber);
    console.log(transakcije);
}

resolve仅当项目有效地添加到数组时才应调用上述代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在JavaScript中过滤数组时过滤嵌套数组

如何在JavaScript中展平嵌套数组?

Javascript如何过滤嵌套数组数据

在JavaScript中执行计算后,如何在嵌套数组中获取所有对象?

如何在Javascript中获取嵌套数组的长度?

如何在JavaScript中的嵌套数组中获取值的indexOf位置?

如何在JavaScript中的嵌套数组中查找值

在JavaScript中访问嵌套数组项

如何在JavaScript中的无限嵌套数组中获取父ID

在javascript中如何在具有嵌套数组的对象数组中查找值

用于访问Javascript中的嵌套数据的更好模式

JavaScript中的嵌套数组

访问JavaScript中的嵌套数组/属性

如何在JavaScript中展平嵌套数组?

在 javascript 中,如何从 json 数据创建嵌套数组或对象?

如何在javascript中递归嵌套数组?

如何使用构造函数Javascript在嵌套数组中输出键值对中的键

如何使用 JavaScript 访问 JSON 数据中嵌套数组中的特定元素?

从javascript中的json访问嵌套数组键,值

如何在javascript中访问常量嵌套函数的参数?

如何在对象数组的嵌套数组中获取数组对象javascript

如何从 JavaScript 中的嵌套数组中删除元素?

如何在javascript中过滤嵌套数组

如何在javascript中更改嵌套数组对象键和相同的数组

我们如何在 JavaScript 中的嵌套数组中获取递归无法到达的键?

如何在 javascript 中嵌套异步函数的回调?

如何在 javascript 中访问嵌套在 JSON 中的数据?

如何使用一个公共字段提取数据并在javascript中制作嵌套数组

无法在 JavaScript 中映射嵌套数组数据?