ejs.renderFile回调中的“返回”输出“未定义”

时间:2019-05-29 18:58:28

标签: javascript node.js ejs

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的回调中有returnejs.renderFile,则app.js中的html结尾为'undefined'。在其他情况下,会有一个预期的值(例如200,handlers.getHTML应该立即返回)。

那么,为什么return的回调中的ejs.renderFile输出为'undefined'?我认为这与EJS本身有关,但是找不到文档。

[重复] 编辑:我希望代码能作为答案,而不是指向异步通用课程的链接,在学习模式下,我会发现它很有价值,但在当前情况下却不然..

0 个答案:

没有答案