1
app.get('/:user/:tag', function (req, res) {
fs.readdir('api'+path.sep+req.params.user, function (err, files) {
var tweets=[];
for (var i =1, j=files.length ; i <j; i++)
{
fs.readFile('api'+path.sep+req.params.user+path.sep+files[i],'utf8', function (err, data)
{
data=JSON.parse(data);
if (data.tag==req.params.tag){tweets.push(data);};
});
};
res.send(tweets);
});
});
看來問題在於fs方法的回調,但我無法長時間解決它。快速節點服務器返回GET陣列上的空陣列
你的readfile函數是異步的。您應該使用此功能的同步版本。 – 2015-03-02 14:40:21
因爲'fs.readFile'是異步的,所以你有一個競爭條件,這會導致你的'res.send'在任何讀取完成之前被調用。這與你的for循環有同樣的問題。你可能想看看所有的'async'或使用'sync'版本。 – jungy 2015-03-02 14:41:19
謝謝你@ jungy幫助很大! – 2015-03-02 15:00:01