我有一个tslint任务,当我像这样返回gulp流时,它可以工作
return gulp.src('src/**/*.ts')
.pipe(tslint())
.pipe(tslint.report('verbose'));
但是当我尝试返回一个承诺时,它似乎在任务结束前完成了?
let deferred = Q.defer();
gulp.src('src/**/*.ts')
.pipe(tslint())
.pipe(tslint.report('verbose'))
.on('finish', () => deferred.resolve());
return deferred.promise;
答案 0 :(得分:0)
有两种方法可以解决这个问题。
如果您希望返回Promise而不是仅返回流,请按this answer收听事件end
和error
。
第二种方法是从Q库切换到bluebird(或使用节点中包含的Promise库)。我发现Q中的Promise实现没有按预期工作(在节点4.2.6中使用gulp 3.9.0),但切换到bluebird确实有效。