首页 > 解决方案 > 异步/等待,然后在我的情况下不起作用

问题描述

我有一个函数,其中包含数组中的一千个对象:

function Alltransaction(transactionArray) {
    transactionArray.map(async (transaction) => {
        dataAgainsthash = await web3.eth.getTransaction(transaction)

        TransactionObject = {
            transactionHash : transaction,
            from : dataAgainsthash.from
        };

        transactionArray.push(TransactionObject)
        console.log("transaction array", transactionArray)
    });
}

然后我有另一个函数将这数千个对象数组存储到数据库中

function saveTransactionToDb() {
    console.log("after loop",transactionArray)
    transactionss = new Transaction({
        blockNumber : blockNumbers ,
        transactions : transactionArray
    })

    // Now save the transaction to database
    await transactionss.save();
    // console.log("save to database")
}

然后我在我的路由器中调用它

await Alltransaction(transactionArray);
await saveTransactionToDb();

我也尝试

Alltransaction(transactionArray).then(saveTransactionToDb())

但它总是saveTransactionToDb()在对象数组填充Alltransaction()方法之前运行

标签: node.js

解决方案


你在 saveTransactionToDb 和 Alltransaction 函数之前尝试过async关键字吗?

async function Alltransaction(transactionArray){
     // your code       
}

async function saveTransactionToDb(){ // your code logic* await transactionss.save(); }


推荐阅读