Web Workers — замечательная штука. Я люблю их использовать при первой же возможности, когда требуется обработать большой объем данных. Недавно появилась задача распарсить очень крупный JSON. Всё отлично, берем JSON.parse и пихаем его в отдельный скрипт. Нет, что-то не то. Пара строк в отдельном JS файле? Фигня. Почему бы не сделать что-то типа такого:
Worker(function(){
onmessage= function( e ){
postMessage( JSON.parse( e.data) );
}
});
Как говорится,
сделал.
А использовал я вот этот ответ:
http://stackoverflow.com/questions/5...454685#6454685
И эту либу, предназначенную для старых браузеров для эмуляции поддержки воркеров:
http://code.google.com/p/ie-web-worker/
Код пока что не оформлял, тупо запхал его в html. Чуть позже запилю на гитхаб и, может быть, писану ха хабру.
Если текущий браузер не поддерживает объект URL или BlobBuilder, то инлайновый воркер будет работать в однопоточном режиме (будет включена эмуляция, как для старых браузеров). Обычный воркер будет работать по-прежнему. Для старых браузеров и обычный и инлайновый будут эмулироваться.
//Тупо возвращает инстанс конструктора Worker
var worker = InlineWorker( function(){
onmessage = function(e) {
postMessage('msg from worker, ' + e.data);
};
});
worker.onmessage = function(e) {
alert(e.data);
}
worker.postMessage( 'msg from window' );
Сабж:
http://dl.dropbox.com/u/13598455/Inl...ker/index.html