我在多个 MongoDB “.findOne” 函数上对不同的集合使用“await”,一次一个。我想让它们一起异步运行,并以某种方式知道它们何时都可以使用。
而不是这样做:
async function myFunction() {
const collection_1 = await firstCollection.findOne({})
const collection_2 = await secondCollection.findOne({})
const collection_3 = await thirdCollection.findOne({})
console.log(collection_1, collection_2, collection_3)
}
我可以做这样的事情吗?
async function myFunction() {
[collection_1, collection_2, collection_3]
await new Promise(() => {
collection_1 = firstCollection.findOne({})
collection_2 = secondCollection.findOne({})
collection_3 = thirdCollection.findOne({})
})
console.log(collection_1, collection_2, collection_3)
}
我不知道如何正确使用 Promises 来做到这一点。
要跟踪多个基于 Promise 的异步操作的并行执行,请使用Promise.all()
:
async function myFunction() {
const [collection_1, collection_2, collection_3] = await Promise.all([
firstCollection.findOne({}),
secondCollection.findOne({}),
thirdCollection.findOne({})
]);
console.log(collection_1, collection_2, collection_3)
}
Promise.all()
如果您通过的任何承诺被拒绝,将拒绝。如果您想要所有结果,无论是否可能拒绝,您都可以使用Promise.allSettled()
。请参阅文档以了解其解析值的确切工作原理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句