nodejs表示读取文件并asynchronous返回响应
我想要做这样的事情
router.get('/getforecast/:stationShortCode', function(req,res){ var stationShortCode = req.params.stationShortCode; var fs = require('fs'); fs.readFile("data/wx.hourly.txt", "utf8", function(err, data){ if(err) throw err; //do operation on data that generates say resultArray; return resultArray; }); res.send(resultArray); });
显然, res.send
被同步调用,而文件读取asynchronous。 有没有一个聪明的解决办法呢? 我是不是真的通过了res
?
fs.readFile("data/wx.hourly.txt", "utf8", function(err, data){ if(err) throw err; var resultArray = //do operation on data that generates say resultArray; res.send(resultArray); });
您的文件被读取。 您传递给readFile
函数的callback被调用。 然后你可以生成数据,然后你可以发送响应。 看看asynchronouscallback是如何工作的,因为在这里你的代码并不像你想的那样从上到下执行。 而且因为匿名函数“记住”周围范围内的所有variables,所以可以在callback中使用res。