Node.js csvtojson-在函数之外返回结果

时间:2018-06-22 14:44:32

标签: javascript node.js

我对此还比较陌生,还没有完全了解这一切的原理...

基本上我正在使用csvtojson函数将csv文件转换为json。 这样可以正常工作,并将json数组输出到console.log。

执行此操作后,我想获取返回的json数组并对其进行一些其他操作,例如输出到文件。

我的问题是如何在创建函数的函数之外使用数组,或者应该在函数内编写代码?

这是我的代码:

const csvFilePath='./test.csv'
const csv=require('csvtojson')

csv()
.fromFile(csvFilePath)
.then((jsonObj)=>{
    console.log(jsonObj);
//should I write code here 
});


console.log(jsonObj);
//This returns jsonObj is not defined
//how do I/Can I read jsonObj here

有人可以帮我了解我在这里需要做什么吗?

1 个答案:

答案 0 :(得分:0)

因为csv()函数是异步的,并且返回Promise对象。您可以在.then()函数内部读取该值。


解释器如何查看代码:

// Create a variable and store a data inside
const csvFilePath='./test.csv'

// Create a variable and store a data inside
const csv=require('csvtojson')

// Call the function csv().fromFile(csvFilePath), because it's asynchronous
// deal with the result later
csv()
.fromFile(csvFilePath)
.then((jsonObj)=>{
    console.log(jsonObj);
});

// Display the content of the variable jsonObj
// jsonObj is not declared, display 'undefined'
console.log(jsonObj);

// Leave the current function

一段时间后

// Execute the .then function
.then((jsonObj)=>{
   // Display the content of the variable jsonObj
   console.log(jsonObj);
});

这是一个演示代码段

const asynchronousFunction = () => new Promise((resolve) =>
  setTimeout(() => resolve('asynchronous'), 1000));

const ret = 'not initialized';

asynchronousFunction()
  .then((ret) => {
    console.log(ret);
  });

console.log(ret);