1

我有一个 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;
4

1 回答 1

0

有两种方法可以解决此问题。

如果您希望返回 Promise 而不是仅返回流,请根据此答案收听事件end和。error

第二种方法是从Q库切换到bluebird(或使用 node 中包含的 Promise 库)。我发现 Q 中的 Promise 实现没有按预期工作(在节点 4.2.6 中使用 gulp 3.9.0),但切换到 bluebird 确​​实有效。

于 2016-01-30T14:11:04.170 回答