【发布时间】:2015-05-02 22:54:46
【问题描述】:
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方法的回调,但我解决了很长时间。
【问题讨论】:
-
你的 readfile 函数是异步的。您可能应该使用此功能的同步版本。
-
你有一个竞争条件,因为
fs.readFile是异步的,这导致你的res.send在任何读取完成之前被调用。这与您的for循环相同。您可能想看看全部使用async或使用sync版本。 -
感谢@jungy 帮了大忙!
标签: javascript ajax node.js express callback