Gulp在异步调用后发出任务结束

时间:2015-07-28 10:22:14

标签: gulp

我正在使用gulp run-sequence,其中一项任务包括对网络服务的自定义远程调用,我不想让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
    );
});

1 个答案:

答案 0 :(得分:2)

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

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)...