Я хотел бы передать некоторые данные от веб-работника родительскому процессу. Я пытался сделать это, используя:
var s = `
self.onmessage = function(event) {
postMessage(self.process(event.data))
};
self.process = function* (n) {
for (var i=0; i<n; i++) yield i;
}
`
var blob = new Blob([s], {type: 'application/javascript'});
var worker = new Worker(URL.createObjectURL(blob));
worker.onmessage = e => {console.log('got back', e.data)}
worker.postMessage(7);
Но это бросает Uncaught DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': [object Generator] could not be cloned.
. Замена «yield» на «return» и удаление звезды из объявления функции устраняет ошибку go (но, конечно, она не позволяет передавать результаты в родительский процесс).
Кто-нибудь знает, как это сделать? можно использовать генераторы в веб-работниках? Будем весьма благодарны за любые подсказки, которые другие могут предложить по этому вопросу!