【问题标题】:Run multiple Gulp Tasks asynchronously异步运行多个 Gulp 任务
【发布时间】:2016-01-21 00:18:31
【问题描述】:

我有一个 gulp 任务数组:

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

如果我启动以下 gulp 任务,它将同时运行我的任务数组中的所有任务。

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

有没有办法从任务数组异步运行我的任务?

【问题讨论】:

  • NodeJS 是单线程的,因此“同时”运行的任务实际上是“异步”运行的。

标签: asynchronous gulp taskmanager


【解决方案1】:

Gulp 是基于 promise 的,默认是异步的。 引用来自官方Gulp documentation

如果 fn 执行以下操作之一,则可以使任务异步:

  • 返回一个流
  • 返回一个承诺
  • 接受回调

看看这个模拟上述行为的例子。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多