Gulp 在异步调用后停止发出任务

Gulp 在异步调用后停止发出任务,gulp,Gulp,我正在使用gulprun sequence,我的一项任务包括对Web服务的自定义远程调用,我不希望gulp在完成之前继续运行,但是它会立即继续运行,因为我没有正确的返回 gulp.task('upload', function() { fs.readFile('./dist.zip', { encoding: 'base64' }, function(err, data) { params['ZipFile'] = data; lambda.updat

我正在使用gulp
run sequence
,我的一项任务包括对Web服务的自定义远程调用,我不希望gulp在完成之前继续运行,但是它会立即继续运行,因为我没有正确的返回

gulp.task('upload', function() {

    fs.readFile('./dist.zip', { encoding: 'base64' }, function(err, data) {
        params['ZipFile'] = data;

        lambda.updateFunctionCode(params, function(err, data) {
            return true;
        });
    });
});

// Our default task will build a production copy, then upload to Lambda
gulp.task('default', function(callback) {
    return runSequence(
        ['clean'], ['js', 'npm', 'env'], ['zip'], ['upload'],
        callback
    );
});

您需要在“上载”任务中使用回调,以便在任务完成时发出信号。像这样:

gulp.task('upload', function(callback) {
    fs.readFile('./dist.zip', { encoding: 'base64' }, function(err, data) {
      params['ZipFile'] = data;
      lambda.updateFunctionCode(params, function(err, data) {
          callback();
      });
    });
});


另外,别忘了检查上述fs.readFile和lambda.updateFunctionCode:if(err).

啊,谢谢你没有意识到我可以将回调传递给该函数。Re:错误检查,为了可读性,我删除了一个巨大的代码块:)