CODE1
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将获得“未定义”值。我不知道它为什么会发生,这是否意味着我不能在回调函数中赋值?或者我还想念别的吗?感谢
答案 0 :(得分:1)
在读取文件之前执行var arr = str.split(/\n/);
。此时str仍然是undefined
。回调旨在成为异步过程完成后执行的代码。这允许节点响应,同时(通常)仅具有单个线程。
节点也有一个readFileSync
方法,但这通常会违背使用Node的目的,因为整个程序在读取文件时会阻塞。