我写了一个函数,它应该根据用户的id从JSON文件中返回一个日期,但是我得到了undefined
。当我把readFile
函数放在messageCreate
事件侦听器中时,它工作了。当代码放在函数中时,它就不工作了。
这是js
function GetDate(userid) {
fs.readFile("users.json", "utf-8", (err, jsonString) => {
if(err) {
return err;
} else {
try {
const obj = JSON.parse(jsonString);
let date = "";
for (i=0; i < obj.users.length; i++) {
if(obj.users[i].id === userid){
date = obj.users[i].date;
}
}
return date;
}
catch {
return "Error parsing JSON!" + err;
}
}
})
}
下面是调用该函数的messageCreate
事件侦听器。
client.on("messageCreate", message => {
if(message.content === "test") {
const date = GetDate(message.author.id);
console.log(date);
}
})
下面是JSON文件
{
"users": [
{
"id": "1010101010",
"date": 1671876850
},
{
"id": "2020202020",
"date": 1671451250
}
]
}
1条答案
按热度按时间ruyhziif1#
GetDate
中不返回任何内容,只在回调函数中返回。如果要使用回调,则需要将回调函数传递给
getDate
,并在获得结果(或错误)后调用该函数。看看下面的代码。我还简化了一点
for
循环。你也可以使用promises,这会让你的代码更易读: