通过Promise.all提高异步/等待的性能

时间:2019-08-19 05:22:35

标签: javascript typescript asynchronous async-await

所以我是Typescript的新手,但是我真的很喜欢async / await功能,但是,在实现过程中我可以看到一些性能问题,我想看看是否有一种优雅的方式来处理多个独立的异步块而没有阻塞。

这是我正在进行的工作的简化示例:

exports.f1 = functions.https.onRequest(async (req, res) => {
    const data = req.body
    try {
        const user1: string = await name_from_uuid(data.user1_uuid);
        const user2: string = await name_from_uuid(data.user2.uuid);
        const message: string = `User1 name: ${user1}, User2 name: ${user2}`

        console.log(`message`)
        res.status(200).send({ 'message': message })
    } catch (error) {
        console.error(error)
        res.status(500).send({ 'error' : error })
    }
})

我的理解是,await name_from_uuid(data.user2.uuid)await name_from_uuid(data.user1.uuid)的承诺解决之前不会开始。现在,为了使这两个函数并行执行,我认为Promise.all([user1Promise, user2Promise])是我想要的,但是我不想拥有then(() => {}).catch(() => {})等的嵌套回调。

在并行执行异步块时,有什么方法可以保持异步/等待的内联简单性?

更新 我相信我可以做到以下几点,但是可以保证所返回的已解决承诺的顺序吗?

const promises = await Promise.all([user1Promise, user2Promise])

0 个答案:

没有答案