node.js - 异步/等待,然后在我的情况下不起作用
问题描述
我有一个函数,其中包含数组中的一千个对象:
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()
方法之前运行
解决方案
你在 saveTransactionToDb 和 Alltransaction 函数之前尝试过async关键字吗?
async function Alltransaction(transactionArray){
// your code
}
async function saveTransactionToDb(){
// your code logic*
await transactionss.save();
}