0

我需要创建一个渲染方法来将 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);
    }
  });
}

谢谢!

4

1 回答 1

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);
    });
  });
}
于 2020-06-30T15:50:19.870 回答