MATLAB中unzip出错,node.js里unzip出错的处理
手頭這個腳本原來是這么寫的
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就會觸發(fā)三次error事件
于是cb函數(shù)就被觸發(fā)了三次
而且也不能把error事件里的cb去掉,因為我發(fā)現(xiàn)如果發(fā)生了錯誤,close消息會一直無法返回
如此一來,外面的大循環(huán)又會一直卡主
當(dāng)然,我加了個flag,檢查一下cb第幾次返回,也能讓cb只返回一次
這樣一來整個程序的執(zhí)行順序倒是沒問題了
但是整個腳本執(zhí)行完之后不會退出,如此看來,前面的unzip過程實際上還是沒有結(jié)束
這里到底應(yīng)該怎么寫呢
總結(jié)
以上是生活随笔為你收集整理的MATLAB中unzip出错,node.js里unzip出错的处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: binaryreader java,C#
- 下一篇: php7.2与php5.6共存,同域名下