javascript - 我如何将前一个 promise 的结果传递给下一个 promise ?

标签 javascript es6-promise chain

我的后端有一系列 promise ,我需要在第二个 promise 中访问第一个 promise 的结果

 mongo.connect()
    .then((client) => {
      return circolari.infiniteScroll(client, currCirc)
    })
    .then(({ data, client }) => {
      mongo.close(client)
      res.send(data)
    })
    .catch(error => res.sendStatus(error.message))

我需要访问client在第二个 promise 中关闭连接。 现在为了实现这个目标,我决心circolari.infiniteScroll(client, currCirc)像这样的对象:

resolve({
    data: data,
    client: client
})

通过此解决方法,它可以工作,但我认为有更好的方法,谢谢。

最佳答案

你可以让它短一点:

mongo.connect()
.then(client => circolari.infiniteScroll(client, currCirc)))
.then(({ data, client }) => {
      mongo.close(client);
      res.send(data);
})

或者使用await和async:

async function returnResponse(res) {
    let client;
    try {
        client = await mongo.connect();
        const data = await circolari.infiniteScroll(client, currCirc);
        res.send(data);
    } catch (err){
        res.sendStatus(err.message)
    } finally {
        await mongo.close(client); // close connection in every case
    }

}
foo();

关于javascript - 我如何将前一个 promise 的结果传递给下一个 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068730/

相关文章:

javascript - 如何简化javascript日期对象?

javascript - 在 Angular 中读取对象内的数组

python - 在 Python 字典链中查找键?

javascript - 我如何做 JavaScript 原型(prototype)继承(原型(prototype)链)

javascript - 简化复杂的if语句

javascript - 为什么我的 WebSocket 客户端总是在发送消息后重新加载?

javascript - React-Redux 删除 HTTP 请求

javascript - 按顺序触发异步调用

promise - 从 Vuex 操作返回 Promise

c++ - 使用管道链接 Hadoop MapReduce (C++)