我正在尝试使用WebWorker来解析用户选择的目录中的某些文件,如下所示:
function readEntries(reader, callback) {
reader.readEntries(function(results) {
results.forEach(function(entry) {
if (entry.isDirectory) { readEntries(entry.createReader(), callback); }
else { callback(entry); }
});
});
}
readEntries(initialDir.createReader(), function(entry) {
var nodeWorker = new Worker('worker.js');
nodeWorker.onmessage = function(e) { /* do stuff */ }
nodeWorker.postMessage(entry);
});
initialDir
是来自DirectoryEntry
的{{1}}。
相应的chrome.fileSystem.chooseEntry({'type': 'openDirectory'}, ...
会使用worker.js
来解析传递的文件,并将分析结果传回FileReaderSync
。
如果我执行此操作,我会收到以下/* do stuff */
:
DOMException
由于Error: Failed to execute 'postMessage' on 'Worker': An object could not be cloned.
返回一个空字符串,我应该如何将本地未经过装箱的文件传递给Web工作者?有没有其他方法可以达到我的目的?