我的后端有一连串的诺言,我需要访问第二个诺言的第一个诺言的结果
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
})
有了这种解决方法,它可以工作,但是我认为有一种更好的方法,谢谢。
答案 0 :(得分:0)
您可以将其缩短一点:
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();