Javascript 处理异步内部多个wait的正确方法
我有一个异步函数(控制器),里面有多个wait。例如,我可以有这样的东西:Javascript 处理异步内部多个wait的正确方法,javascript,node.js,Javascript,Node.js,我有一个异步函数(控制器),里面有多个wait。例如,我可以有这样的东西: exports.check_in = async (req, res, next) => { try { const place= await Place.findOne({_id: req.params.placeId}); // MY SECOND DEPENDS ON THE RESULT OF THE FIRST ONE const area= await Area.find
exports.check_in = async (req, res, next) => {
try {
const place= await Place.findOne({_id: req.params.placeId});
// MY SECOND DEPENDS ON THE RESULT OF THE FIRST ONE
const area= await Area.findOne(_id: place.areaId);
const client = await Client.findOne({_id: req.body.clientId});
// BUSINESS LOGIC HERE
} catch (error) {
next(error);
}
}
因此,我的疑问是:
// new client data, new area data, new place data
await client.save();
await area.save();
await place.save();
我认为在调用函数1之前,可以使用
&&
操作符检查数据-如果第一个结果错误,会发生什么?它应该用404还是什么来回应?阐明您的需求并从中着手。这实际上并不特定于async/await,因为它已经产生了类似于同步的控制流。这些是编程的基础,使用if/else等的条件分支。2-视情况而定。3-使用错误处理,您描述的是一个事务,Mongo(ose)中的事务支持不是很好(问题甚至没有提到您使用它),依赖本机实现或自己回滚。