node.js nodeschool learnyounode需要帮助理解解决方案的代码
node.js nodeschool learnyounode need help understanding the code of the solution
问题-NODESCHOOL.IO的练习;LEARNYOUNODE;MAKE_IT_MODULAR读取目录并按给定的文件扩展名过滤文件-使用模块来完成大部分工作。关于添加代码的问题参考如下。第一次看到这个-但我从这个例子中了解到,当你调用一个已经定义的函数时,你可以向它添加代码。但我想澄清一下,我是否理解它的执行。是回调函数-下面提到的,允许执行这个"添加"的代码吗?感谢
solution.js:
var filterFn = require('./solution_filter.js')
var dir = process.argv[2]
var filterStr = process.argv[3]
filterFn(dir, filterStr, function (err, list) {
if (err)
return console.error('There was an error:', err)
// QUESTION ON THIS PART OF THE CODE - see below in the module part of the program
list.forEach(function (file) {
console.log(file)
})
})
//这是程序的模块
solution_filter.js:
// require file system module
var fs = require('fs')
module.exports = function (dir, filterStr, callback) {
var regex = new RegExp('''.' + filterStr + '$')
fs.readdir(dir, function (err, list) {
// callback err if the readdir method fails
if (err)
return callback(err)
list = list.filter(function (file) {
return regex.test(file)
})
// IS THIS CALLBACK SO IT LOOP AND IS ABLE TO EXECUTE ADDED CODE in the solution.js filterFn()
callback(null, list)
})
}
将其视为"向已定义的函数添加代码"并不准确。您将传入一个完全不同的函数作为回调参数。模块中的代码就是这样编写的,它会调用您传入的函数
您的函数无法访问模块中的代码,模块也无法访问您的函数中的代码。
在JavaScript中,动态创建函数并将其作为参数传递给其他函数是一种非常常见的模式。
相关文章:
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 了解因子分解解决方案
- 提交表单后的最佳解决方案
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- chrome中的意外全局变量有解决方案吗
- 更好的解决方案HTML元素幻灯片从右侧CSS转换
- 使用SeleniumWebdriver将文本复制到文件时出现编译错误的解决方案
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- JS驱动的常见问题页面的推荐DB解决方案
- 这里有一个更优雅的/DRY/可维护的JS解决方案
- 什么是农民最实用的解决方案;印刷动物”;
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 将数据加载到地图上的更好解决方案
- 我根据解决方案按类对
- 元素进行分组,但需要帮助了解它的工作原理
- 当我想发布一个变量但有 1 个 js 时,ajax post 的解决方案是什么