我想做这样的事情
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
,而文件读取异步。这有一个聪明的解决方案吗?我是否被迫实际通过res
?
答案 0 :(得分:6)
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
函数的回调。然后,您可以生成数据,然后您可以发送响应。了解异步回调的工作原理,因为这里的代码不会像您认为的那样从上到下执行。并且因为匿名函数“记住”了它们周围范围内的所有变量,所以你可以在回调中使用res。