【问题标题】:Promisify Express response.render methodPromisify Express response.render 方法
【发布时间】:2020-10-20 23:24:38
【问题描述】:

我需要创建一个渲染方法来将 html 块构建成一个字符串。 它似乎有效,但我使用了臭名昭著的“新承诺”,我想知道我所做的是否正确:

async render(req, res) {
  const locals = await this.execute(req); // DB operation, retrieve context
  return new Promise((resolve, reject) => {
    try {
      return res.render('my-view', { ...locals, layout: null }, (err, html) => { 
        if (err) {
          return reject(err);
        }
        return resolve(html);
      });
    } catch (err) {
      return reject(err);
    }
  });
}

谢谢!

【问题讨论】:

    标签: javascript node.js express async-await node-promisify


    【解决方案1】:

    new Promise 构造函数从执行器回调中隐式捕获(同步)异常,因此不需要try/catch。此外,return 值将被忽略。你只会写

    async render(req, res) {
      const locals = await this.execute(req); // DB operation, retrieve context
      return new Promise((resolve, reject) => {
        res.render('my-view', { ...locals, layout: null }, (err, html) => { 
          if (err) reject(err);
          else resolve(html);
        });
      });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-23
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2017-07-04
      • 2020-04-05
      • 1970-01-01
      相关资源
      最近更新 更多