gpt4 book ai didi

javascript - 我有一个带有 gulp.watch 的 for,但它无法正常工作

转载 作者:行者123 更新时间:2023-11-28 04:04:51 29 4
gpt4 key购买 nike

我需要帮助。我有这个代码。我有很多来源,但我不使用 n*source watch 。我认为 for 可以是一个解决方案,但是 watch 已实例化,并且它不读取我的源代码[i]。

你可以说出一些解决方案。

谢谢!

var base_source = '../';
var source = ['dir1', 'dir2'];
var allFiles = '/**/*';
var dest = '../dist';

gulp.task('default', function () {

for(var i = 0; i < source.length ; i++) {
var watchW = base_source + source[i] + allFiles;

gulp.watch(watchW, function(obj){
copyFiles(watchW, dest , obj);
});

}
}

编辑:我需要 copyFiles 函数中的 source[i]

抱歉我的英语不好^^"

最佳答案

很难解释为什么你的代码不起作用。正如您所看到的,只有最后一个索引“i”绑定(bind)到所有 watch 功能。这称为“引用问题”。通过引用,您的所有 watch 功能都使用相同的索引 i。例如,参见referencing last index in loop .

使用@OverZealous的答案作为creating gulp tasks in a loop中的指导这里有一个适合您的解决方案:

var gulp = require('gulp');

// changed to up one directory
var base_source = './';

// changed variable name slightly for clarity
var sources = ['dir1', 'dir2'];
var allFiles = '/**/*';

// changed to up one directory
var dest = './dist';

var watchSources = Object.keys(sources);

gulp.task('default', function () {

watchSources.forEach(function (index) {

var watchW = base_source + sources[index] + allFiles;

gulp.watch(watchW, function (obj) {
copyFiles(watchW, dest, obj);
});
});
});

function copyFiles(watched, to, obj) {
console.log("watched = " + watched);
}

关于javascript - 我有一个带有 gulp.watch 的 for,但它无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46792306/

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