javascript - 在 Node.js 中,我可以通过 readFile() 的回调函数为变量赋值吗?

标签 javascript node.js

代码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/

相关文章:

javascript - Openshift 和带有 node-mysql 的外部 mysql 数据库(错误 : connect ECONNREFUSED )

javascript - 轮询卡住、Pebble.js、ajax、node.js

javascript - 在 NodeJS 中从 html 调用 TypeScript 编译的代码

javascript - 多方向、多图像、视差滚动

javascript - Material-UI Select 在 onChange 后不更新

javascript - REGEX:如何解析同一前缀文本内的可变数量的数据点

javascript - 您将如何实现类似于 React Native 的条件导入?

javascript - 如何在对象数组中找到具有最长字符长度的对象键

javascript - 如何在 Handlebars 模板中输出它?

node.js - Heroku + socket.io 广播上的多个测功机