Node.js从快速网页中读取文件

时间:2018-10-08 23:00:11

标签: node.js synchronization

我有问题,我需要从使用express开发的网页中读取csv文件。

基本上我有

router.get('/metricas', function(req, res, next) {
  var datos= lee.leedatos();
  res.render('metricas', {page:'Metricas', menuId:'metricas',data:datos});
});

和lee.leedatos()是以下

exports.leedatos= function(){
    var datos;
    const csv =require('fast-csv')
    const stream =fs.createReadStream('mywebsite/book1.csv');
    const streamCsv=csv({
        headers:true,

    })
    .on('data',data=>{
        datos=data;
        //console.log(datos);
    })
    .on('finish',()=>{
        console.log('finished')
        console.log(datos)
        return datos;
    })
    stream.pipe(streamCsv);

}

我的问题是,网页总是在文件完全被读取之前返回:( ..和data:datos始终为空。

如何使通话同步?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用回调/ promise来跟踪异步代码的执行。这是带有诺言的代码的样子:

  let payload = {
                "user":{
                "profile":{
                    "details":
                    {
                        "firstname": this.firstnameControl
                        "lastname": this.lastnameControl
                        "phone": this.phoneControl.value
                        "email": this.emailControl.value

                    }
                }
            }
    }

这里是博客文章的链接,可以帮助您了解异步功能:https://blog.risingstack.com/node-hero-async-programming-in-node-js/