如果我在“烹饪”异步/等待一个正确的方法,有人会这样帮助我吗?
我参加回复一个明确的答复,一旦承诺给DB解决。
router.get('/', (req, res, next) => {
(async function() {
try {
const cases = await db.collections.cases.stats();
return res.render('index', {
title: 'Welcome',
totalDBRecords: cases.count,
});
}
catch (e) {
console.error(e);
next(e);
}
})();
});
发布于 2017-07-25 15:55:32
我不认为你需要用IFFE来包装这个。您可以简单地编写异步函数如下:
router.get('/', async (res, req, next) => {
try {
const cases = await db.collections.cases.stats();
res.render('index', {
title: 'Welcome',
totalDBRecords: cases.count,
});
} catch(err) {
console.log(err);
next(err);
}
});
那应该管用。我还喜欢韦斯博斯将其函数封装在错误处理程序中的方式,就像这样(不必使用try/catch)。
const catchErr = (fn) => {
return function(res, req, next) {
fn(req, res, next).catch(next);
}
};
const home = async (res, req, next) => {
const cases = await db.collections.cases.stats();
res.render('index', {
title: 'Welcome',
totalDBRecords: cases.count,
});
};
router.get('/', catchErr(home));
https://codereview.stackexchange.com/questions/171110
复制相似问题