代码1
var fs = require("fs");
fs.readFile(process.argv[2],"utf8",function(err,data){
if(err)throw err;
console.log(data.split(/\n/).length-1);
});
代码2
var fs = require("fs");
var str;
fs.readFile(process.argv[2],'utf8',function(err,data){
if(err)throw err;
str=data;
});
var arr = str.split(/\n/);
console.log(arr.length-1);
大家好,我现在正在学习node.js,上面的代码是读取一个文件,然后异步计算它的换行数。 对于code1,它可以正常工作,但对于code2,str将得到“未定义”值。我不知道为什么会发生这种情况,这是否意味着我无法在回调函数中分配变量?或者我还想念其他什么吗?谢谢
最佳答案
var arr = str.split(/\n/);
在读取文件之前执行。此时 str 仍然是未定义
。回调旨在成为异步进程完成后执行的代码。这允许 Node 在(通常)只有一个线程的情况下做出响应。
Node 也有一个 readFileSync
方法,但这通常违背了使用 Node 的目的,因为在读取文件时整个程序将被阻塞。
关于javascript - 在 Node.js 中,我可以通过 readFile() 的回调函数为变量赋值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32772985/