美文网首页
gulp 任务同步异步的思考

gulp 任务同步异步的思考

作者: 利312 | 来源:发表于2017-02-07 18:23 被阅读188次

js构建的时候,经常出现需要处理异步同步的,比如js:release等任务需要等待clean任务完成才可以;
很容易想到使用 gulp.task的第二个数组参数;

但如果第二个参数的数组需要都等待clean完成呢?也就是js:release,css:release,html:release这些任务都需要先等待clean完成才能去并行运行,这个时候下面的例子就给出了方案
看官网的例子: https://github.com/gulpjs/gulp/blob/master/docs/API.md

var gulp = require('gulp');

// takes in a callback so the engine knows when it'll be done
gulp.task('one', function(cb) {
    // do stuff -- async or otherwise
    cb(err); // if err is not null and not undefined, the run will stop, and note that it failed
});

// identifies a dependent task must be complete before this one begins
gulp.task('two', ['one'], function() {
    // task 'one' is done now
});

gulp.task('default', ['one', 'two']);

其中 gulp.task('default', ['one', 'two']);gulp.task('default', ['two']);是一样的了。
关键点是理解,task如果返回满足是callback,promise,stream三种情况,则一定要等待第二个参数的数据的任务执行完,才会执行当前的任务(经测试,如果有多个任务都依赖同一个任务,这同一个任务只会执行一次)。
这样就有下面的方案:

gulp.task('clean',function(){
  ... //需要满足三个条件之一
});
gulp.task('js:release',['clean'],function(){});
gulp.task('css:release',['clean'],function(){});
gulp.task('html:release',['clean'],function(){});
gulp.task('default',['js:release','css:release','html:release'],function(){})

相关文章

  • gulp 任务同步异步的思考

    js构建的时候,经常出现需要处理异步同步的,比如js:release等任务需要等待clean任务完成才可以;很容易...

  • 关于同步运行gulp任务那些事

    背景 Gulp 默认将所有任务和步骤异步化运行。显而易见,Gulp 在效率上是有明显的提升的。但是如果需要同步执行...

  • JS事件循环机制

    1. 同步任务与异步任务 所有的任务可以分为同步任务和异步任务。 同步任务就是立即执行的任务,同步任务一般会直接进...

  • Gulp基础

    基础使用 yarn add gulp --dev gulpfile.js 入口文件 gulp 的任务函数都是异步的...

  • 异步

    同步任务 && 异步任务 程序里面所有的任务,可以分成两类:同步任务(synchronous)和异步任务(asyn...

  • Gulp 第一个Gulp任务

    本节我们开始学习如何创建 Gulp 任务。每一个 Gulp 任务都是一个异步的 JavaScript 函数,这个函...

  • Gulp 第一个Gulp任务

    本节我们开始学习如何创建 Gulp 任务。每一个 Gulp 任务都是一个异步的 JavaScript 函数,这个函...

  • OC 线程笔记

    GCD: 创建任务,添加到队列,GCD自动分发任务 同步/异步同步任务,异步任务的区别: 线程是否要等待任务结束,...

  • js执行顺序总结

    流程图 首先执行同步任务,异步任务会插入到异步队列中。同步任务执行完毕,查询是否有异步任务,回到主任务执行。 微任...

  • setTimeout、Promise、Async/Await 的

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

网友评论

      本文标题:gulp 任务同步异步的思考

      本文链接:https://www.haomeiwen.com/subject/ufemittx.html