1、在根目录public文件夹下新建worker.js,监听主线程传来的数据,处理完关闭:
self.addEventListener('message', function (e) {
//接收主线程传来的数据
const files = e.data;
//循环,耗时操作
const temp = []
for (const i in files) {
const curFile = {}
if (!files[i].name || !files[i].webkitRelativePath) continue
curFile.file = files[i] // 存储的源文件对象,用来上传
curFile.name = files[i].name.substring(0, files[i].name.lastIndexOf('.'))
curFile.webkitRelativePath = files[i].webkitRelativePath
curFile.size = calcSize(files[i].size)
curFile.type = files[i].name.split('.')[files[i].name.split('.').length - 1]
curFile.lastModified = timeStamp2Date(files[i].lastModified)
temp.push(curFile)
}
//将结果发给主线程
self.postMessage(temp);
//关闭
self.close();
}, false);
2、在VUE的方法中写了下面的代码:
onPickDirectory(e) {
const that = this;
that.scaned = false
const files = e.target.files
//实例化worker,指定刚才的js
var worker = new Worker('work.js');
//向子线程发送数据
worker.postMessage(files);
//监听子线程返回数据
worker.onmessage = function (event) {
//接收数据
that.fileList = event.data;
//结束
worker.terminate();
}
},
