gulp和promises没有得到解决

时间:2014-11-04 08:33:12

标签: node.js gulp

此示例来自文档,但从命令行运行时,任务本身不会退出。它运行并完成,但不像我使用的其他gulp任务那样返回shell。

var Q = require('q');

gulp.task('somename', function() {
  var deferred = Q.defer();

  // do async stuff
  setTimeout(function() {
    deferred.resolve();
  }, 1);

  return deferred.promise;
});

如何让此任务退回到shell?我意识到我可以明确地调用process.exit(0),但这会破坏可链接性。

2 个答案:

答案 0 :(得分:1)

再次为我工作:)

var gulp = require('gulp');
var Q = require('q');

gulp.task('somename', function(callback) {
    var deferred = Q.defer();
    setTimeout(function() {
        deferred.resolve();
    }, 1);
    return deferred.promise;
});

结果:

∴ gulp somename
[13:35:51] Using gulpfile ~/Desktop/promise-test/gulpfile.js
[13:35:51] Starting 'somename'...
[13:35:51] Finished 'somename' after 1.69 ms
∴

版本:

∴ node -v
v0.10.33
∴ npm -v
2.1.5
∴ gulp -v
[13:37:34] CLI version 3.8.9
[13:37:34] Local version 3.8.9

答案 1 :(得分:1)

我注意到你的功能中没有回调,但是#34;对我而言#34;答案呢。当我从我的函数中删除回调时,它没有自动退出,复制你的问题。

添加回调...即:

var Q = require('q');

gulp.task('somename', function(callback) {
  var deferred = Q.defer();

  // do async stuff
  setTimeout(function() {
    deferred.resolve();
  }, 1);

  return deferred.promise;
});