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, время: 06:24. |