Я пытаюсь реализовать таймер в JavaScript с помощью веб-работников. Я написал следующий код. Но это не работает. Кто-то может указать, почему это не работает? У меня нет большого опыта работы с JavaScript. Итак, было бы замечательно, если бы кто-то подробно объяснил причину.
Вот что я пытаюсь сделать:
Сначала создайте sharedArrayBuffer и рабочий поток,И создание еще одного массива, над которым я поработаю и хочу посчитать время. Затем отправка sharedArrayBuffer в рабочий поток, который увеличивает первое значение в массиве в цикле for. Наконец, я читаю это значение в файле main.js и каждый раз получаю 0.
main.js
var buffer = new SharedArrayBuffer(1024);
var i;
var uint32 = new Uint32Array(buffer);
var myWorker = new Worker('worker.js');
var array = new Uint32Array(8);
array[0] = 0;
console.log(Atomics.load(uint32,0),array[0]);
myWorker.postMessage(buffer);
for(i=0;i<300000000;i++) {
array[0] += i;
}
console.log(i,Atomics.load(uint32,0),array[0]);
работник. js
onmessage = function(buffer) {
console.log('from worker');
var uint32 = new Uint32Array(buffer.data);
for(i=0; ;i++) {
uint32[0] += 1;
};
}