2016-01-20 91 views
0

我一飲而盡任務的數組:運行多個任務咕嘟咕嘟異步

var tasks = ['task1','task2','task3']; 

如果我開始我的下面一飲而盡任務,它將運行在我的任務陣列中的所有任務,但在同一時間。

gulp.start('mytasks', tasks, function(){}); 

有沒有辦法從任務數組異步運行我的任務?

+0

NodeJS是單線程的,所以「同時」運行的任務有效地「異步」運行。 – MarcoL

回答

0

Gulp是基於承諾的,默認情況下是異步的。 從官方Gulp documentation報價:

任務可以進行,如果它的FN執行下列操作之一異步:

  • 返回流
  • 返回一個承諾
  • 接受回調

看看這個e xample模擬上面提到的行爲。

var gulp = require('gulp'), 
    wait = require('gulp-wait'); 

var tasks = ["task1","task2","task3"] 

gulp.task('mytasks', function() { 
    return gulp.src("/dist") 
     .pipe(wait(5)) 
     .pipe(gulp.dest('DESTINATIONPATH')); 
}); 

gulp.task('task1', function() { 
    return gulp.src("/dist") 
     .pipe(wait(100)) 
     .pipe(gulp.dest('DESTINATIONPATH')); 
}); 

gulp.task('task2', function() { 
    return gulp.src("/dist") 
     .pipe(wait(200)) 
     .pipe(gulp.dest('DESTINATIONPATH')); 
}); 


gulp.task('task3', function() { 
    return gulp.src("/dist") 
     .pipe(wait(50)) 
     .pipe(gulp.dest('DESTINATIONPATH')); 
}); 

gulp.task('default', function() { 
    gulp.start('mytasks', tasks, function(){}); 
});