app.js
const httpServer = http.createServer(function(req,res){
req.on('end', async function() {
//...
html = await handlers.getHTML(sqlConn1, ejs, ...);
res.end(html);
});
});
handlers.js
handlers.getHTML = async function(sqlConn1, ejs, ...){
return 200; // If this line is here, html (in app.js) equals to '200'.
ejs.renderFile('template.ejs', json, options, function(err, str){
return 200; // If this line is here, functions html (in app.js) is 'undefined'.
return str; // str equals to HTML string, but html (in app.js) is 'undefined'.
});
};
app.js
需要handlers.js
。
为清晰起见,省略了很多代码。 EJS完成工作,并使用str
数据将HTML生成为json
。如果handlers.getHTML
的回调中有return
个ejs.renderFile
,则app.js中的html结尾为'undefined'。在其他情况下,会有一个预期的值(例如200,handlers.getHTML
应该立即返回)。
那么,为什么return
的回调中的ejs.renderFile
输出为'undefined'?我认为这与EJS本身有关,但是找不到文档。
[重复] 编辑:我希望代码能作为答案,而不是指向异步通用课程的链接,在学习模式下,我会发现它很有价值,但在当前情况下却不然..