我對nodejs,express和javascript相當陌生。 我有一個代碼:在參數評估之前調用表達式渲染
router.get('/', function(req, res, next) {
const content = fileReader();
res.render('index', { "content" : content });
});
的FileReader使用fs.readFileSync所以它首先讀取所有文件,然後返回一個大的字符串讀取文件中的for循環。
然後將該字符串傳遞給查看和呈現。
上面的代碼工作正常,但是當我改成這樣:
router.get('/', function(req, res, next) {
res.render('index', { "content" : fileReader() });
});
它不工作。該頁面已呈現,但內容爲空。
的FileReader功能:
const fileReader = function()
{
let low = 0;
let high = 9;
let content = "";
for(; low <= high; low++)
{
if(fs.existsSync(contentDir + "/" + low))
{
content += fs.readFileSync(contentDir + "/" + low, "utf-8");
}
else
{
break;
}
}
return content;
}
有人能解釋這是怎麼回事?爲什麼在fileReader()完成之前調用渲染?不應該先執行該函數並調用render來等待結果嗎?或者render和fileReader並行調用?
請解釋。
您可以發佈了代號爲的FileReader()? – roughcoder
兩個例子都是相同的。你確定第一個產生了真正的結果嗎? –
@roughcoder添加了文件讀取器 – Jan