Promisify Express response.render 方法
Promisify Express response.render method
我需要创建一个渲染方法来将 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);
}
});
}
谢谢!
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);
});
});
}
我需要创建一个渲染方法来将 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);
}
});
}
谢谢!
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);
});
});
}