Web Workers - возможна ли передача в поток строки кода JS
почитал пару статей на тему WW
и понял что создается поток так:
var worker = new Worker('worker.js');
в конструктор передается адрес скрипта вопрос - можно ли конструктору передавать полный текст скрипта -
new Worker('скрипт')
new Worker(eval(x))
смысл в том что есть задача генерировать код для потоков программно, без обращения к файловой системе и к серверу без использования статического когда js например уже загруженного в теле документа |
можно сделать Blob и передать на него ссылку.
https://developer.mozilla.org/en-US/...ng_web_workers параграф Embedded workers |
|
спасибо товарищи. но мне надо понятнее и на русском, чтобы самому сделать а не изучать чужие фреймворки
|
Цитата:
var code = 'postMessage(123);';
var blob = new Blob([code],{type: "text/javascript"});
var ref = URL.createObjectURL(blob);
var worker = new Worker(ref);
worker.onmessage = function (oEvent) {
alert("data from worker: " + oEvent.data);
};
URL.revokeObjectURL(ref);
|
спасибо. но вторую половину не понял, строки 4-8
поясни пожста чо это |
Цитата:
5-7 - механизм обмена данными с воркером, здесь он для демонстрации работы и к теме отношения не имеет. 8 - убиваем ссылку на блоб, чтобы не повисла и не было утечек памяти. |
тут основная идея как раз в строках 2-3, для их осознания раскури html5 FileAPI
|
var code = 'postMessage(123);';
var blob = new Blob([code],{type: "text/javascript"});
var ref = URL.createObjectURL(blob);
var worker = new Worker(ref);
.....
URL.revokeObjectURL(ref);
- то есть такова обязательная последовательность спасибо |
Цитата:
но ничож более знать-то не надо для запуска и работы в таком режиме ? я могу просто вставить такой кусок кода и всё - готовое решение ? не ? |
| Часовой пояс GMT +3, время: 17:13. |