我想将jsonObj存储在全局变量中。但是,它不起作用。


var jsonContent;

csvConverter.on("end_parsed", function(jsonObj){
//   console.log(jsonObj);
       jsonContent = jsonObj;
});

console.log(jsonContent);



jsonObj可以在{...}内部正确打印。但是为什么不能将其传递给全局变量? “ console.log(jsonContent);”的结果仍未定义。


undefined

最佳答案

jsonContent是全局的,因为它在JS文件中的任何位置都可用。问题是csvConverter.on是异步的,因此它在运行时不会阻塞程序。因此,在jsonContent运行其回调之前,您将无法使用csvConverter.on

如果需要使用jsonObj,则必须在对csvConcerter的回调运行后使用它。为此,您可以简单地将逻辑包装在一个函数中,并在调用回调后运行该函数:

var jsonContent;

csvConverter.on("end_parsed", function(jsonObj){
  jsonContent = jsonObj;
  runLogic();
});

function runLogic() {
  // this function will run after csvConverter.on callback is called
  console.log(jsonContent);
}

09-25 18:43