如何使用 NodeJS 异步等待多个异步 MongoDB findOne 函数

伯恩西

我在多个 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 来做到这一点。

jfriend00

要跟踪多个基于 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章