嗨,我是Node的新手,有一个简单的问题,这两个被截断之间有什么区别
注意:我知道异步/等待功能,并且在前端应用程序中,处理异步动作的最佳实践是,但是在使用猫鼬的节点中,我想知道哪种方法更适合处理
第一个解决方案
// for example we pass this function as controller to route handler
exports.myController = async (req, res, next) => {
try {
const data = await Model.find();
const some = await new Model(data).save();
} catch(e) {
next(e);
}
}
第二种解决方案
exports.myController = (req, res, next) => {
const data = Model.find((err, data_) => {
const some = new Model(data_);
some.save((err, result) => {
....
})
});
}
我想知道我何时遇到猫鼬错误,以第二种方式可以抛出这样的错误
// in callback function
if (err) {
throw Error();
}
但是我该如何在async/await
解决方案中解决
答案 0 :(得分:1)
您只需将其扔出或将其记录在您的catch块中:
try {
const data = await Model.find();
const some = await new Model(data).save();
} catch(e) {
throw e;
next(e);
}
async / await的工作方式类似于promise,但没有嵌套回调,并且它会引发与第一个错误同步的错误,并停止执行其他行。
基于已编辑的注释:
您应该始终使用Node.js中的异步解决方案,甚至是与javascript相关的任何事物,这都是最好的可组合和可重用的解决方案。