不幸的是,这是gulp中的一个已知问题,没有解决方法: https://github.com/gulpjs/gulp/issues/1421
你从任务中返回的内容告诉gulp如何等待:你可以返回一个Stream(gulp等待它完成),或者一个Promise(gulp等待它解决),等等。 不能 你正在努力做的事情就是回归 对流的承诺 。
现在,解决方案是手动等待您的gulp流在异步函数内结束,如下所示:
let myTask = async () => { let files = await getFilePaths(); return new Promise((resolve, reject) => { return gulp.src(files) .pipe(gulp.dest('someplace')) .on('end', resolve) .on('error', reject); }); };
这很难看,但目前还没有更好的方法 都 标准的异步调用 和 单个任务中的流管理。