gpt4 book ai didi

javascript - 学习 Nodejs,回调和 fs.readFile 的问题

转载 作者:行者123 更新时间:2023-12-03 08:25:06 26 4
gpt4 key购买 nike

我正在学校学习 Nodejs,遇到了回调和 fs.readFile() 的小问题。不幸的是,我必须严格使用原生 Nodejs 模块来完成这项作业。

我正在尝试异步读取包含用户数据的纯文本文件。

这是我到目前为止所得到的:

// node_modules/user/index.js
modules.exports = {
all: function() {
fs.readFile(users_file, function(err, data) {
if (err) throw err;
var users = {};
var lines = (""+data).split("\n");
for (var i = 0; i < lines.length; i++) {
var col = 0;
var csv = lines[i].split(",");
var data = {
id: csv[++col],
firstName: csv[++col],
lastName: csv[++col],
emailAddress: csv[++col],
phoneNumber: csv[++col]
};
users[""+i] = new User(data);
}
console.log(users);
return users;
});
}
}

console.log(users) 的输出;是正确的,但是这总是返回未定义。

最佳答案

您似乎正在尝试返回一些 users来自 readFile 回调的变量没有任何意义的函数。您可能想向其传递一些回调,该回调将在读取文件时调用:

modules.exports = {
all: function(done) {
fs.readFile(users_file, function(err, data) {
if (err) done(err, null);
...
done(null, users);
});
}
};

现在当你调用这个all时在函数中,您不会期望它有任何返回值,但您宁愿传递一个回调来访问结果。就像这样:

xxxx.all(function(err, users) {
if (err) throw err;
// TODO: do something with the users parameter here.
});

而不是写:

var users = xxxx.all();

这永远不会起作用,因为 all是一个异步函数。

关于javascript - 学习 Nodejs,回调和 fs.readFile 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com