返回信息流举个例子 比如写了一个check的函数,传入一个文件的路径,使用find_resources_in_file方法找到其中引用的资源,如果这个资源不引用其他资源 则do something;如果这个文件中还引用了其他资源,则递归。
```javascript
function check(filePath){
const resources = find_resources_in_file(filePath);
if(resources.length == 0) {
//do something
} else {
resources.map(check)
}
```
现在想改造一下check方法, ```javascript check(filePath,previous){}``` 每次执行传入一个previous参数,代表上一次执行的filePath,因为需要知道当前进行check的这个文件,是包含在哪个文件中的,也就是想找到他的爸爸。那么下面也要改成```javascript resources.map(check(???, filePath))```
想问一下这个???怎么样来表示呢。有没有一个参数表示将要进行递归的数组中的那个元素。。?
这是一条镜像帖。来源:北邮人论坛 / java-script / #1382同步于 2017/2/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
使用array.map()递归的时候怎么传入参数呢?
matsunatsuri
2017/2/15镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
map里的callback别直接放check,它传入参数是固定的(map当前值,索引,调用的数组),你可以用个function当callback,然后这个函数里调用check
ES6的话用bind吧,考虑下入口文件的父文件你怎么处理就可以
function check(filePath) {
const pptah = this.ppath || filePath;
const resources = find_resources_in_file(filePath);
const that = {
ppath: filePath
}
if (resources.length == 0) {
// do something
} else {
resources.map(check.bind(that))
}
}
需求是依赖查询,你这样写check其实干不了啥,因为你do somethig只是针对无依赖的文件
好一点的做法应该是用递归来构建依赖树,然后去重压入加载栈,最后出栈加载资源
前端的话ES6的import/export和ES5的amd/cmd/umd都帮你解决依赖加载的问题了,这种hack方法就不要用了,就算你构建了依赖数,前端除了加载这些资源,其他的也干不了啥...
后端的话nodejs用promise.join和fs也可以实现文件级别的依赖处理,包括压缩,合并,美化,文本分析等等
总之,你的这个需求前后端目前都有成熟的解决方案,不要自己hack,后端因为有很多文件级别的处理,所以提供的只是基础功能,就看怎么组合了
我是在尝试写一个脚本。静态资源更新后 计算md5重命名并且改变父文件中的url(这个问题的需求)。。类似资源增量更新发布的那种。。只是在自己练习的项目里写着玩玩。。前辈提到的这些import promise之类的还没怎么接触过。。
确实构建一个依赖树更好。。
刚才尝试用一个数组来构建了一条线式的文件层级关系 每次处理array.pop()就可以了 也解决了这个问题不需要传参了~不过还是想学下那个bind方法
总之很感谢前辈的解答~
【 在 logsin 的大作中提到: 】
: ES6的话用bind吧,考虑下入口文件的父文件你怎么处理就可以
: function check(filePath) {
: const pptah = this.ppath || filePath;
: ...................
感谢解答 我去尝试下~
【 在 h452114240 的大作中提到: 】
: map里的callback别直接放check,它传入参数是固定的(map当前值,索引,调用的数组),你可以用个function当callback,然后这个函数里调用check