внешний класс или массив javascript, видимый в рабочем сообщении - PullRequest
0 голосов
/ 30 сентября 2019

С p5.js в первый раз я не могу рисовать постепенно снежинку Коха: когда я нажимаю, чтобы выполнить, я вижу результат рисования, когда отторжение исчезло.

, поэтому я реализовал его с помощью рабочего потока

Поскольку я не знаю, как поделиться внешним var, таким как класс или массив (потому что если сценарий create type = "module" не подходит для worker.js)

Я могу приехать, чтобы сделать это с трудом

'Снежинка Коха' сделана в рекурсивном режиме.

Проект

  • index.html
  • main.js
  • worker.js, который содержит (onmessage = function ... и класс VonKoch)

в worker.js это похоже на

onmessage = function(e) {
 console.log('Worker: Message received from main script');
 let depth = e.data.depth;
 let f = new VonKoch(VonKoch);
};

class VonKoch {

 constructor(depth) {
    ...
 }
 pencil_advance(){
   ...
   postMessage([this.x, this.y, this.x + dx, this.y + dy, ]);

Удивительно! он может отправлять сообщения из / в класс, который находится вне сообщения

 }
 ...
}

Из main.js это выглядит так:

function setup() {

 noLoop();

 createCanvas(800, 400);
 if (window.Worker) {
   const myWorker = new Worker("worker.js");
   let el = {profondeur:profondeur};
   myWorker.postMessage(el);
   let a=0;

сообщение получено, поэтому с p5. JS рисует линию

   myWorker.onmessage = (e) => {
     line(e.data[0],e.data[1],e.data[2],e.data[3]);
     a++;
   };

С этим я могу видеть ничьи постепенно.

                      ------------------------

Хорошо, но я хочу более простой и быстрый результат с внешним массивом [] [] изпиксель, который я могу перерисовать каждый setInterval (...; redraw (), 500).

"main.js" может распознать этот массив, если он объявлен и инициализирован в "worker.js", но когда этоМассив изменен в "worker.js" (с классом VonKoch), main.js увидит исходный класс массива без изменений. Может быть, это из "new Worker (" worker.js ")?

И если я создам этот класс массива в" main.js ", он не будет распознан в" worker.js ".

Единственный способ иметь «класс массива», который распознается в «main.js», - это поместить его в «worker.js».

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 08 октября 2019

Решено.

С localStorage: не в порядке (см. Комментарий) с indexedDB: не в порядке (см. Комментарий)

Решение: в файле worker.js, выполняющем снежинку КохаКогда он делает рисовать, это испытание временем. Если Date.now () больше 500 (мс), я отправляю матрицу с постом. Таким образом, «main.js», в то время как рисует матрицу с p5.js после получения сообщения, приходит из «worker.js». Скоро

глубина 12

...