![](/img/trans.png)
[英]Why doen't my JavaScript code work in the script tag added by me dynamically but it can work when it is as a global variable?
[英]Script doen't execute a code line - why?
我将编写一个简单的NodeJS应用程序,该应用程序读取文件,并逐行分析其行并写入结果。 这是有效的代码示例
var lines;
var fs = require('fs');
var data="";
fs.readFile('list.csv', 'ascii', function(err,data){
if(err) {
console.error("Could not open file: %s", err);
process.exit(1);
}
var data2=data.split(/[\n\r]+/);
for(var i=0; i<data2.length; i++){
/*LISTING ALL THE LIST LINE-BY-LINE */
console.log(i + data2[i]);
}
});
我想知道为什么要在function(err,data){..*my-code*..}
? 我试图将所有变量声明为全局变量并编写
console.log();
在代码末尾–似乎只是不执行此代码行。 那么,为什么我不能在function(err,data){}
之外编写代码?
NodeJS的主要功能之一是非阻塞事件循环。 当函数花费很长时间时,Node脚本不会等待函数返回,这就是为什么您需要在回调中传递代码的原因。
默认情况下,所有文件系统操作都是非阻塞的,因此需要在操作完成后运行的回调函数中使用结果,在这种情况下,文件已被读入变量。
通常,使用无阻塞IO允许服务器同时运行多个操作是一个更好的设计,但是您可以将大多数fs
操作切换为同步运行:
var data = fs.readFileSync('list.csv', 'ascii');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.