NodeJS fs.readdr-将回调内部作为对象返回
NodeJS fs.readdir - return callback internals as an object?
我正在尝试重构我的代码,使其使用起来更好。我想做的是进行Node回调,并将结果或错误作为JavaScript对象返回。范围界定规则似乎阻止了我这样做,那么有没有一种简单的方法可以做到这一点,或者我被困在回调中了(除非我做了一些奇怪的事情,比如在JavaScript中实现Promises,谷歌搜索揭示了这些天所有酷孩子都在做什么)?
我对JavaScript仍然不太满意——我认为可能有一种更简单的方法可以做到这一点,但我只是没有得到它,因为我对它的使用还不够(例如,我知道使用jQuery,我可以在承诺中设置"this",以访问我的外部范围,但我不确定如何使用Node,或者是否可以)。
/*
* Retrieves the full list of only the files, excluding subdirectories, in the directory provided.
*
* Parameters:
* dir: The directory to get the file list from.
*
* Return: An object containing either an error message or the fileList as a String array.
* e.g.
* { errMsg: undefined,
* fileList: ["file1.txt", "file2.xlsx"]
* }
*/
var getFileList = function (dir) {
var filterOutDirectories = function (files) {
return files.map(function (file) {
return path.join(dir, file);
}).filter(function (file) {
return fs.statSync(file).isFile();
});
};
var result = {
errMsg: null,
fileList: null
};
fs.readdir(dir, function (err, files) {
if (err) {
result.errMsg = "Error: Could not retrieve files...'n't" + err;
} else {
result.fileList = filterOutDirectories(files);
}
});
console.log(result.fileList); // returns null
console.log(result.errMsg); // also returns null
return result;
}
readdir是一个异步调用,因此在回调中设置的变量在调用后不能直接使用。
相关文章:
- Javascript:firstChild对象返回undefined
- Javascript对象返回垃圾值
- 从js中的对象返回一个值
- 从Javascript类对象返回函数
- 从具有最高值的对象返回属性
- 为什么我的Date对象返回当前日期
- NodeJS fs.readdr-将回调内部作为对象返回
- Leadfoot会话对象返回promise
- 如何从对象返回可读字符串
- 日期对象和ISO日期对象返回不同的日期
- 使用JavaScript's FormData对象返回整个html
- 节点.js请求对象 - 返回响应正文以供进一步操作
- 使用 Restangular 使用 RESTful API - RESTful API 将数组作为顶级对象返回是否安全
- 带有方法的 Javascript 对象返回“没有方法'我的方法名称'”错误
- 从 Date() 对象返回 dd-mm-yyyyy
- JSON 中的日期对象返回的数据被视为字符串
- Javascript - 如何获取字符串,打印单词,字符,空格,平均单词长度的#并作为对象返回
- 如何从新对象返回值,同时保留其方法
- 如何从对象返回某些键
- 从 Javascript 中的对象返回值