将Chrome FileSystem API FileEntry传递给Web worker

时间:2014-09-30 12:37:58

标签: google-chrome-app web-worker fileapi

我正在尝试使用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工作者?有没有其他方法可以达到我的目的?

0 个答案:

没有答案