nodejs表示读取文件并异步返回响应

时间:2015-07-31 05:30:49

标签: node.js asynchronous express

我想做这样的事情

 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

1 个答案:

答案 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。