博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GULP自动化项目构建之–正确的异步执行方式(RETURN)
阅读量:5914 次
发布时间:2019-06-19

本文共 923 字,大约阅读时间需要 3 分钟。

2017年2月23日个人博客文章--迁移到segmentfault

在做项目中,不经意间代码会写成这个样子。

gulp.task('clean',function(){    gulp.src(['./dist','./rev'])        .pipe(clean())});gulp.task("build",["clean"],function(){    runSequence("htmlMove",['imageMin','reCollector','btMove','views'],'over')})

那么这就可能会导致一个问题,因为这个task:clean不是一个正确的异步执行方式,所以他就会出现–显示clean任务已经finished接着他会执行htmMove、imageMin等等一系列任务,但是.pipe(clean())却还在执行,这就造成了边删除目录边执行其他的一系列任务,最终会因为找不到指一些指定目录会报错。

那么什么是正确的异步执行呢?

API文档给出了详细解释,这里不做详细介绍。

其中最重要的一点着重提出:

正确的异步执行方式:使用一个 callback,或者返回一个 promise 或 stream。

如果你想要创建一个序列化的 task 队列,并以特定的顺序执行,你需要做两件事:

给出一个提示,来告知 task 什么时候执行完毕,

并且再给出一个提示,来告知一个 task 依赖另一个 task 的完成。
那么针对刚才的gulp流有以下改进:

gulp.task('clean',function(){    return gulp.src(['./dist','./rev'])        .pipe(clean())});gulp.task("build",["clean"],function(){    runSequence("htmlMove",['imageMin','reCollector','btMove','views'],'over')})

加上return,不加return的话,task和里面的gulp流是异步执行的,所以就会出现先finished在编译的情况。

转载地址:http://iiwvx.baihongyu.com/

你可能感兴趣的文章
EMACS vs VIM趣图对比
查看>>
struts2找不到action之unknown location
查看>>
mina MessageDecoder用法
查看>>
python 爬取贴吧图片
查看>>
Git 常用命令
查看>>
Beego源码分析
查看>>
KVO和KVC的关系
查看>>
[转载]python 详解re模块
查看>>
★《唐琅探案》后记【2】
查看>>
Struts2
查看>>
vue spa 微信jssdk二次分享不显示自定义分享内容问题解决
查看>>
repoforge源的使用
查看>>
该符号在函数 "int cdecl invoke_main(void)”中被引用
查看>>
PHP mencached分布式算法
查看>>
Python---定向爬取网页的内容
查看>>
python-qt4-gl
查看>>
java生成唯一订单号
查看>>
Elasticsearch 2.20 文档篇:更新删除文档
查看>>
刚刚学习到的Android有效的彻底退出App的方法,记录一下
查看>>
Mycat在MySQL主从模式(1主1从)下读写分离和及自动切换模式的验证
查看>>