Тема: InlineWorker
Показать сообщение отдельно
  #1 (permalink)  
Старый 09.02.2012, 22:40
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

InlineWorker
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
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием