首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异步/等待生命

异步/等待生命
EN

Code Review用户
提问于 2017-07-25 11:58:09
回答 1查看 1.3K关注 0票数 0

如果我在“烹饪”异步/等待一个正确的方法,有人会这样帮助我吗?

我参加回复一个明确的答复,一旦承诺给DB解决。

代码语言:javascript
运行
复制
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);
    }
  })();
});
EN

回答 1

Code Review用户

回答已采纳

发布于 2017-07-25 15:55:32

我不认为你需要用IFFE来包装这个。您可以简单地编写异步函数如下:

代码语言:javascript
运行
复制
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)。

代码语言:javascript
运行
复制
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));
票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/171110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档