【发布时间】:2019-09-22 02:16:45
【问题描述】:
我对 JavaScript 完全陌生,但在使用 fs.readFile() 函数时遇到了麻烦。
我需要读取一个文件,并确定我是否必须调用 successFn(当 err boolean 为 false 时)或 errorFn(如果 err boolean 为 true)。
但是,当 I err 为 false 时,我试图调用“提取器”函数作为参数——提取器将读取的数据分离到每个单词中。
我需要调用fs.readFile,所以我需要使用参数,其中一个参数是fileName。
评分者将使用他自己的文件测试我的代码,所以我不应该定义 fileName,但我被要求定义它(我理解为什么要求我这样做,但我觉得那里应该是解决这个问题的一种方法。)
另外,JavaScript 语法非常不直观,所以我可能会在语法上犯一些错误,但这是我的代码,请告诉我如何解决我的问题:
function readAndExtractWith(extractor) {
fs.readFile(fileName, 'utf-8', (err, data) => {
if (err) {
errorFn(err);
}
else {
data = extractor();
successFn(data);
}
return extractor;
});
}
【问题讨论】:
-
fileName未定义,因为您从未定义它。由于您在函数中使用它,因此您需要将变量作为参数传递或在函数中指定它。 -
感谢您的评论。我理解为什么我被要求定义 fileName - 这是因为它从未在函数内部定义或作为参数传递。但是,我无法知道该 fileName 变量是什么,因为它将由评分者任意定义。我想知道是否有任何方法可以在使用 fs.readFile 且无需对文件名进行硬编码的情况下解决此问题。
-
无论哪种方式,您都需要将文件传递给
fs.readFile(),以便它可以处理它。fileName来自哪里?请在您的问题中包括这一点。
标签: javascript higher-order-functions