Gulp заканчивается слишком рано, когда вместо потока возвращается обещание

У меня есть задача 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;

person Kareem Mohamed    schedule 25.10.2015    source источник


Ответы (1)


Есть два способа решить эту проблему.

Если вы хотите вернуть обещание, а не просто вернуть поток, прослушайте события end и error согласно этот ответ .

Второй способ — переключиться с библиотеки Q на bluebird (или используйте встроенную библиотеку Promise в узле). Я обнаружил, что реализация Promise в Q не работает должным образом (с использованием gulp 3.9.0 в узле 4.2.6), но переключение на bluebird работает.

person tephyr    schedule 30.01.2016