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就會觸發三次error事件
于是cb函數就被觸發了三次
而且也不能把error事件里的cb去掉,因為我發現如果發生了錯誤,close消息會一直無法返回
如此一來,外面的大循環又會一直卡主
當然,我加了個flag,檢查一下cb第幾次返回,也能讓cb只返回一次
這樣一來整個程序的執行順序倒是沒問題了
但是整個腳本執行完之后不會退出,如此看來,前面的unzip過程實際上還是沒有結束
這里到底應該怎么寫呢
總結
以上是生活随笔為你收集整理的MATLAB中unzip出错,node.js里unzip出错的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: binaryreader java,C#
- 下一篇: oracle 排序的分析函数,Oracl