JavaScript-异步/等待不等待承诺解析
我想使用Mongoose的批量操作来升级事务。对于我的每个事务,我希望在一个循环中处理它们,在这个循环中,我需要使用承诺。在这个承诺解决之后,我想把upsert添加到bulk中 我这里的问题是,尽管我等待每个承诺的完成,但在任何承诺得到解决之前,大容量是在函数结束时执行的。我做错了什么,或者我怎样才能解决这个问题JavaScript-异步/等待不等待承诺解析,javascript,mongoose,async-await,es6-promise,bulk,Javascript,Mongoose,Async Await,Es6 Promise,Bulk,我想使用Mongoose的批量操作来升级事务。对于我的每个事务,我希望在一个循环中处理它们,在这个循环中,我需要使用承诺。在这个承诺解决之后,我想把upsert添加到bulk中 我这里的问题是,尽管我等待每个承诺的完成,但在任何承诺得到解决之前,大容量是在函数结束时执行的。我做错了什么,或者我怎样才能解决这个问题 const bulkTransactions = Transaction.collection.initializeUnorderedBulkOp(); transact
const bulkTransactions = Transaction.collection.initializeUnorderedBulkOp();
transactions.forEach( async (transaction: any) => {
// do some suff, fill transaction_data
await Utils.processTransactionType(transaction).then((action: any) => {
if (action) {
// do other stuff
}
bulkTransactions.find({_id: hash}).upsert().replaceOne(transaction_data);
}).catch((err: Error) => {
// log error
});
});
await bulkTransactions.execute().catch((err: Error) => {
// log error
});
据我所知,在使用
wait
时,您不再使用then
返回值:
const bulkTransactions = Transaction.collection.initializeUnorderedBulkOp();
transactions.forEach( async (transaction: any) => {
// do some suff, fill transaction_data
let action = await Utils.processTransactionType(transaction);
if (action) {
// do other stuff
}
bulkTransactions.find({_id: hash}).upsert().replaceOne(transaction_data);
});
await bulkTransactions.execute().catch((err: Error) => {
// log error
});
什么是
事务。forEach
?它如何处理回调返回的承诺?事务只是一个事务对象数组。我使用forEach
遍历数组,这是一个问题:-)正确,但不一定有问题。这并不能解决问题