【发布时间】:2019-01-21 23:20:49
【问题描述】:
在我的 gulpfile 中,我有一个任务处理我的所有页面,另一个任务监视我的页面的更改并仅处理更改的页面。它看起来像这样:
const buildPages = path => cb => {
gulp.src(path)
// some lines of piping
.pipe(gulp.dest(pages.dist));
cb();
}
const watchPages = () =>
gulp.watch(pages.src).on('change', path =>
gulp.src(path)
// the same piping as above
.pipe(gulp.dest(pages.dist))
);
gulp.watch()返回的chokidar watcher对象的.on()方法不接收回调函数,而上面的gulp任务需要一个。所以要删除代码重复,我可以这样做:
const buildPages = path =>
gulp.src(path)
// some lines of piping
.pipe(gulp.dest(pages.dist));
const buildPagesWithCallback = path => cb => {
buildPages(path)
cb();
}
const watchPages = () =>
gulp.watch(pages.src).on('change', path =>
buildPages(path)
);
这是正确的方法吗,或者有没有一种方法可以在不创建额外函数的情况下删除重复项(也许通过让观察者接收回调)?
【问题讨论】:
标签: javascript callback gulp code-duplication