Node.js 如何从函数返回数据并在nodejs中使用

Node.js 如何从函数返回数据并在nodejs中使用,node.js,Node.js,我试图使用一个函数来读取和归档,需要从主代码中打印数据。下面显示的是我的代码 getJsonData().then(function (jsonData) { console.log(jsonData) }) function getJsonData(){ var fs = require('fs'); var XLSX = require('xlsx'); let contents = fs.readFileSync("test.json"); let jsonData =

我试图使用一个函数来读取和归档,需要从主代码中打印数据。下面显示的是我的代码

getJsonData().then(function (jsonData) {
console.log(jsonData)
})

function getJsonData(){
  var fs = require('fs');
  var XLSX = require('xlsx');
  let contents = fs.readFileSync("test.json");
  let jsonData = JSON.parse(contents);
  return jsonData ;

} 

readFileSync
不返回承诺,因此不能在
getJsonData()
之后使用
.then()
,因为
getJsonData()
不返回承诺

您可以简单地使用:

const fs=require('fs');
const results=getJsonData();
控制台日志(结果);
函数getJsonData(){
const contents=fs.readFileSync(“test.json”);
返回JSON.parse(contents);
}

好的,首先,这个函数不是承诺,所以你不能使用
。以下是如何将此代码转化为承诺:

    var fs = require('fs');
    var XLSX = require('xlsx');

    function getJsonData(){
      return new Promise((resolve, reject) => {
        let contents = fs.readFileSync("test.json");
        if(contents == "undefined") {
          reject("File contains no contents");
        } else {
            let jsonData = JSON.parse(contents);
            resolve(jsonData);
        }
      })  


}
然后,您将像在问题中一样使用该函数:

getJsonData().then(function (jsonData) {
  console.log(jsonData)
})

是的,我已经试过了,但当我开始处理由于节点的异步行为而返回的json时,因为jsn在json返回之前读取遇到了错误。。因此,我尝试使用then
readFileSync
是异步的,它将阻止执行,直到内容已读。我不太清楚你在问什么,你能澄清一下吗?