workers ajax синхронизация
Здравствуйте!
есть проблема...похоже с синхронизацией worker`ов. привожу код клиента: var workers = []; for (var i = 0; i < 3; i++) { var worker = new Worker('/myscript'); worker.onmessage = function (data) { console.log(data); } } for (var g = 0; g < worker.length; g++) { workers[g].postMessage('start'); } и код файла myscript, то есть код worker`а: var myWorker = (function (workerWindow) { var myWorker = function () { this.initEvents(); }; myWorker.prototype.log = function (message) { workerWindow.postMessage(message); }; myWorker.prototype.get = function () { var XmlHttp = new XMLHttpRequest(); XmlHttp.open('GET', myURL, false); XmlHttp.send(null); if (XmlHttp.status == 200) { var packet = JSON.parse(XmlHttp.responseText); this.log('packet id: ' + packet.id); } }; myWorker.prototype.initEvents = function () { var self = this; workerWindow.addEventListener('message', function () { self.get(); }) }; }(this)); var ww = new myWorker(this); В этом коде 3 воркера должны отправить запрос на сервер, получить ответ числом(изначально 0, инкрементится при каждом новом запросе на сервер) и вывести его. Вот только на сервер приходит всего 1 запрос, который и получают все 3 воркера, а вывод соответственно получатся такой: packet id: 0 packet id: 0 packet id: 0 хотя по логике должно быть: packet id: 0 packet id: 1 packet id: 2 думал, что дело может в том, что функция get находится в прототипе, однако если перенести ее в конструктор и убрать из прототипа ничего не меняется( подскажите пожалуйста, где у меня тут ошибка? Спасибо большое. |
Часовой пояс GMT +3, время: 06:54. |