gulp如何对待then()的承诺?

时间:2018-07-18 14:03:15

标签: javascript promise gulp del

使用gulp作为构建工具时,我有一个奇怪的行为。我从另一个问题中得到了以下代码,该代码用于在再次运行之前清理构建文件:

function clean() {
    var delResult = del(['build/**/*', 'dist/**/*']);
    return delResult.then(del(['build', 'dist']));
}

gulp.task('clean', clean);

然后我有我的默认任务,该任务在其余的构建中包括clean任务:

gulp.task('default', gulp.series('clean', gulp.parallel('doJsStuff, doCssStuff', 'doEvenMoreStuff'));

问题在于,在两次删除操作完成之前,gulp已经继续进行构建。 据我了解,then将返回一个承诺,并且当该承诺实现时,gulp应该继续。当然,then承诺不能在第一个del承诺之前实现。所以我想它应该能按预期工作,但不会。
行为在gulp 3和4中相同。

我知道我只用一次del通话就可以做同样的事情:

function clean() {
    return del(['build/**', 'dist/**']);
}

这实际上有效,并且是解决我的问题的方法。我仍然想理解,为什么链式承诺不起作用。有人可以告诉我吗?

0 个答案:

没有答案