2015-07-28 71 views
0

我正在使用gulp run-sequence,我的其中一個任務包括一個自定義的遠程調用web服務,我不想讓gulp繼續前進,直到它完成,但它會立即繼續,因爲我不會沒有適當的回報。異步調用後,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 
    ); 
}); 

回答

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(); 
     }); 
    }); 
}); 


也do't忘記檢查上面fs.readFile上的錯誤和lambda.updateFunctionCode:如果(ERR)...

+0

啊謝謝你不知道我可以將回調傳遞給該函數。回覆:錯誤檢查,我刪除了一個巨大的代碼塊的可讀性:) – Titan