gpt4 book ai didi

javascript - 将附加参数传递给 Node js 中 fs.readFile 的回调

转载 作者:行者123 更新时间:2023-11-29 21:22:00 25 4
gpt4 key购买 nike

是否可以将附加参数传递给 fs.readFile 的回调函数。我有我的代码来读取目录并解析所有 XML 文档。我需要将文件名传递到回调链中以进行额外处理。截至目前,我的代码是

var fs = require('fs');
var path = require('path');

module.exports.extractXMLBody = function (dirPath, ext) {
fs.stat(dirPath, function (err, stats) {
if (stats.isDirectory()) {
fetchFiles(dirPath, ext, function (listOfFiles) {
_.each(listOfFiles, function (val, key) {
var completePath = dirPath + '/' + val;
var fileName = path.basename(val, path.extname(val))
// TODO : Figure out to pass additional parameters
fs.readFile(fullPath, parseXML);
});
});
}
});
}

此处 parseXML 是我定义为单独函数的回调,我想将变量 newFileName 传递给回调函数 parseXML

注意:如果我将回调编写为匿名函数,我可以将访问传递给变量,但我试图避免回调的进一步嵌套。

最佳答案

不,您不能将额外的值传递给回调函数,因为 fs.readFile() 不支持它。它只会将 2 个值始终传回回调函数。它遵循 error-first callback结构,这意味着第一个参数将是 Error 或 null(如果未发生),下一个参数将包含文件的数据(如果有)。

如果您想在 fs.readFile() 的回调中访问 fileName 变量,那么您需要在与 fs 相同的范围内定义它.readFile() 被调用。这或多或少需要您使用匿名函数。但是,您仍应将其命名为更好的 Error StackTraces。

_.each(listOfFiles, function (val, key) {
var completePath = dirPath + '/' + val;
var fileName = path.basename(val, path.extname(val));

fs.readFile(fullPath, function parseXML(err, data) {
if(err) {
console.log(err);
}
else {
// parseXML and still have access to fileName
}
});
});

关于javascript - 将附加参数传递给 Node js 中 fs.readFile 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315052/

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