2016-01-20 88 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(){}); 
});