我正在尝试从JSON文件中获取2个值到网页上。 obj ["水果"]和obj ["甲状腺"]。我使用ejs作为模板视图引擎和expressjs。
以下方法说"水果"和#34;甲状腺"未定义。 console.log虽然有效。
app.post('/top', function (req, res) {
var obj;
fs.readFile('./object.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj["fruit"]);
console.log(obj["thyroid"]);
});
res.render(
'disp.ejs',
{
food: obj["fruit"]
name: obj["thyroid"]
}); // render
});
答案 0 :(得分:1)
fs.readFile(path [,options],callback)是读取文件的异步方式。代码设置节点的方式将开始读取文件,然后在文件Array.prototype.insertionSort = function() {
var A = this;
var time = 0;
var n = A.length;
for (var i = 1; i < n; i++) {
var v = A[i];
var j = i-1;
while (j >= 0 && A[j] > v) {
A[j+1] = A[j];
j--;
var temp = new Array(this);
setTimeout(callback(JSON.stringify(temp)), 500*(time++));
}
A[j+1] = v;
var temp = new Array(this);
setTimeout(callback(JSON.stringify(temp)), 500*(time++));
}
return time;
}
完成读取之前立即调用res.render。
如果你把res.render放在回调函数中,它只会在文件读完后调用,并且data
变量符合你的需要。
例如:
data