手头这个脚本原来是这么写的

fs.createReadStream(file_path)

.pipe(unzip.Extract({ path: wow_path + '/Interface/addons' }))

.on("close", function(){

console.log(name + " 解压完毕");

if (cb) {

cb();

}

})

这样写的问题是,如果zip文件有错,整个脚本就会非正常退出

(error是invalid signature)

所以我加了一个error事件处理

fs.createReadStream(file_path)

.pipe(unzip.Extract({ path: wow_path + '/Interface/addons' }))

.on("close", function(){

console.log(name + " 解压完毕");

if (cb) {

cb();

}

})

.on("error", (e) => {

console.log(`${name} 解压出错:${e.message}`)

if (cb) {

cb(e);

}

});

这样写的问题是,同一个压缩包实际上不会只出一个错,我这个zip就会触发三次error事件

于是cb函数就被触发了三次

而且也不能把error事件里的cb去掉,因为我发现如果发生了错误,close消息会一直无法返回

如此一来,外面的大循环又会一直卡主

当然,我加了个flag,检查一下cb第几次返回,也能让cb只返回一次

这样一来整个程序的执行顺序倒是没问题了

但是整个脚本执行完之后不会退出,如此看来,前面的unzip过程实际上还是没有结束

这里到底应该怎么写呢

MATLAB中unzip出错,node.js里unzip出错的处理相关推荐

  1. 柏林纪行(中):Node.js Collaboration Summit

    传送门: 柏林纪行(上):整体感受 柏林纪行(中):Node.js Collaboration Summit 柏林纪行(下):JSConf EU Node.js Collaboration Summi ...

  2. WebContainers简介:在浏览器中原生运行Node.js(译文)

    本篇文章来自StackBlitzblog-埃里克·西蒙斯 2021 年 5 月 20 日 嗨!我们是StackBlitz,一个专门为网络开发量身定制的在线IDE.在本周的谷歌I/O主题演讲中,你可能会 ...

  3. excel表格导入matlab并画等高线,#如何将excel表格中大量数据导入matlab中并作图#excel表格里的自由画笔...

    怎样在已经制好的excel图表中插入新的数据制图 1,在excel里面你直接选中数据然击插入图表就可以啦~ 2要是想实时更新数据源可以尝试下用BDP版,只需要导入一次数据,选择并保存你想要的模板就可以 ...

  4. centos7中安装部署node.js

    下载node.js [root@ecs-c13b ~]# wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz --20 ...

  5. 克里金插值(Kriging)在MATLAB中的实现(克里金工具箱)

    一,直接献上克里金插值MATLAB工具箱 链接:https://pan.baidu.com/s/1p0lt2G8KQ-els7Dyw5jPFg 提取码:wcss 下载后将该程序添加到MATLAB安装文 ...

  6. matlab中符号函数sgn,编程里的函数符号都是什么意思?

    满意答案 qudong1116 2013.08.24 采纳率:59%    等级:12 已帮助:7005人 编程里的函数符号有的是相通的 sin cos tan sqrt exp log log10 ...

  7. node.js里的天龙八部

    express -e 项目名称 创建项目 cd 项目名称 进入项目 npm install 安装package.json中的指定的项目模块 npm install mysql --save 表示安装m ...

  8. 【nodejs】如何从Windows中完全删除node.js

    1.输入cmd命令:npm cache clean --force (如果还没开始删除的话) 2.从"控制面板"的"卸载程序"界面中卸载node程序. 3.重新 ...

  9. Node.js里Cannot find moudle(针对第三方模块)

    问题:Cannot find module(windows环境) 原因:环境变量里找不到模块对应路径 解决方案:在环境变量里加入模块文件夹的路径 变量名:NODE_PATH 变量值:C:\Users\ ...

最新文章

  1. 解决tomcat控制台乱码问题
  2. 99%的人都不知道的品牌冷知识
  3. boost::weak_from_raw相关的测试程序
  4. C语言/C++基础知识
  5. Linux vi/vim基础知识
  6. 【codevs1116】四色问题
  7. 2017 4月20日下午
  8. MATLAB实现的Reed-Muller(RM码,里德-马勒编码)编码解码纠错以及BER分析
  9. 【重磅综述】记忆系统:神经科学的启示「AI核心算法」
  10. Apache Pegasus 首次 Meetup 圆满落幕
  11. 【贪玩巴斯】数字信号处理Digital Signal Processing(DSP)——第三节「离散时间 系统 详解」2021-09-29
  12. AspectJ AOP的使用(@Before、@PointCut、@Around等)
  13. cello2.0安装及相关背景
  14. 小傻蛋的妹妹跟随小甲鱼学习Python的第十三节013
  15. UPS不间断电源不工作如何确定是否损坏
  16. Nacos—苹果Mac电脑os系统安装nacos步骤
  17. opencv (十七)图像透视变换
  18. 剑三千岛湖服务器是不是维护了,剑网3千岛秘辛成就怎么做 探知千岛湖不为人知的秘密...
  19. Oracle 19.3 Grid Infrastructure 软件安装详细教程
  20. 华泰交易钩子之dll 2021-02-25

热门文章

  1. 【已解决】R语言,在线升级
  2. Android生存指南:解Bug策略和思路
  3. matlab 工业相机 曝光时间_机器视觉入门——光源相机镜头
  4. python可以给excel编程吗_python – 我可以通过编程方式将matplotlib图形插入Excel吗?...
  5. prim算法_贪心算法详解(附例题)
  6. 用html编辑csdn的方法
  7. html编写程序常用的,html编写简洁页面表单验证程序.doc
  8. 人工智能实现a*算法解决八数码_小白带你学回溯算法
  9. WebRTC / Jitsi / 架构
  10. 猫、交换机和路由器的区别