此示例来自文档,但从命令行运行时,任务本身不会退出。它运行并完成,但不像我使用的其他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)
,但这会破坏可链接性。
答案 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;
});