首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将csvtojson转换器的值传递给其作用域外的变量

将csvtojson转换器的值传递给其作用域外的变量
EN

Stack Overflow用户
提问于 2016-09-09 14:47:32
回答 1查看 341关注 0票数 0

我目前正在摆弄Node.js,我坚持这个问题。

我正在使用csvtojson转换器(https://github.com/Keyang/node-csvtojson)作为一个单独的模块,我可以任意多次在其他JS文件中调用它。

这里是我的tools.js:

代码语言:javascript
复制
module.exports = {
	csvToJson: function (csvPath) {
		var Converter = require('csvtojson').Converter;
		var converter = new Converter({});
		var transfer = "DEFAULT";
		converter.fromFile(csvPath, function(err, result){
			if (err) {
				return console.log(err);
			}
			else {
				transfer = result;
			}
		});
		return transfer;
	}
};

,我就是这样称呼它的:

代码语言:javascript
复制
var countriesCsvFile = path.join(__dirname, '..', 'testDataFiles', 'countries.csv');

//GRAB TOOLS
var tools = require('../app/tools');
console.log(tools.csvToJson(countriesCsvFile));

结果始终是“默认值”,表示转换器没有接触到它。

我希望将其作为函数的返回值传递,以便能够在不创建文件的情况下动态处理数据并读取该数据。这肯定是一个范围问题,但在我的头皮抓了几个小时,浏览了问题后,我无法检索到任何远程有用的东西。

也是另一个注意事项:如果我调用console.log(结果)而不是transfer = precious,它会显示我宝贵和想要的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-09 15:51:08

您必须传入回调函数,因为csvToJson函数在分配任何值之前正在返回“transfer”。就像Sirko说的,它是异步的。您也可以使用承诺而不是回调,但这本身就是另一个主题。

代码语言:javascript
复制
module.exports = {
  csvToJson: function (csvPath, callback) {
    var Converter = require('csvtojson').Converter;
    var converter = new Converter({});
    converter.fromFile(csvPath, function(err, result){
      if (err) {
        callback(err);
      }
      else {
        callback(null, result);
      }
    });
  }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39414301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档