Web Worker Contest Tools (inofficial) Wiki
Tool for testing web worker for the web worker contest
Brought to you by:
ferenc_hechler
Für alle, die noch Probleme mit dem Debuggen ihrer Web-Worker haben:
ANMERKUNG: In der GUI kann eine Random-Seed gesetzt werden. Sofern diese ungleich 0 ist starten die Worker immer an der gleichen Position. Die Seed wird modifiziert an die Worker übergeben. Diese können den Wert nutzen um selbst reproduzierbare Abläufe zu generieren. Dazu muss der Worker-Code wie folgt angepasst werden:
Alle Vorkommen von Math.random() müssen ersetzt werden durch WorkerRAND.random().
Der Folgende Code muss an den Anfang des Workers gesetzt werden:
// ---------------- CODE for reproducible random numbers ----------------- //
function randomNext() {
this.seed = (1103515245*this.seed+12345) % 2147483648;
return this.seed / 2147483648;
}
function randomRAND(val) {
this.seed = ((val!==0)&&(val!==undefined))?val*1020304050Math.floor(Math.random()*2147483648);
this.random = randomNext;
}
var WorkerRAND = new randomRAND(2);
//------------------------------------------------------------------------ //
und in der onmessage() Methode muss WorkerRAND initialisiert werden. randomSeed wird beim ersten Aufruf des Workers übergeben.
// --------------------------------
onmessage = function (event) {
// Initialisiere Reproduzierbare Zufallszahlen,
// wenn WorkerRAND.random() statt Math.random() verwendet wird.
if (WorkerRAND === undefined) {
WorkerRAND = new randomRAND(event.data.randomSeed);
}
...
// --------------------------------