我在节点中使用异步功能,这里我用mongodb调用多个查询
(即):
let data1;
let data2;
try{
data1 = await mongoQuery1
}catch {
res.send(error)
}
try{
data2 = await mongoQuery2
}catch {
res.send(error)
}
res.send({ data1, data2 });
我对此流程感到困惑。因此,基本上我想发送给用户的都是data1
和data2
,但是如果query1
失败会发生什么,因为显然它将落在第一个catch块中并将响应发送给用户,然后继续执行下一个try块,然后再次发送响应,这是完全错误的。我要如何做到这一点,我想要的是如果我想将错误响应发送回用户的任何捕获中发生任何错误
如果所有try块都成功,那么只有我想将成功响应发送回用户,我该如何实现?
答案 0 :(得分:1)
目前还不清楚您要做什么。
如果您要停止并仅发送错误,则可以在调用return
之后res.send
停止该函数继续运行。
如果您要将错误与其余数据一起发送,然后不要立即调用res.send
,请将错误存储在{{1}中},然后照常发送。
答案 1 :(得分:1)
针对您的情况建议使用Promise.all
:
这两个查询将同时运行,如果有错误,它将立即抛出并到达catch块。
try {
const [data1, data2] = await Promise.all([mongoQuery1, mongoQuery2]);
res.send({ data1, data2 })
} catch {
res.send(error)
}