Передайте отправленный файл веб-работнику по ссылке с минимальными затратами
У меня будет веб-работник для разбора огромного текстового файла (200000 строк, хотя простой синтаксис). Я ожидаю, что пользователь отправит этот файл с помощью drag'n'drop или иным образом, получив File
объект:
var work = new Worker("parser.js")
document.addEventListener("drop", function(e) {
e.preventDefault();
var dt = e.dataTransfer;
var files = dt.files;
if(files.length>0) {
var firstFile = files[0]
var reader = new FileReader();
//SEND FILE TO WORKER?
}
});
Я слышал о переносимых объектах. Есть ли способ передать файл на рабочий? Таким образом, поток GUI не будет замедлен чтением файла?
1 ответ
Некоторые браузеры (не могут найти таблицу совместимости) поддерживают передачу File
объекты через веб-работника postMessage
потому что теперь они используют алгоритм структурированного клона для обработки параметров сообщения. Вероятно, это будет самый эффективный метод для тех браузеров, которые его поддерживают.
Дальнейшие исследования показывают, что структурное клонирование должно быть доступно на: Chrome 13+, Firefox 8+, IE10+, Opera 11.5+, Safari 5.1+