Hallo,
wie es scheint gibt es in Javascript nicht die Möglichkeit eine Funktion als "synchronized" zu deklarieren. Ich bräuchte jedoch etwas ähnliches, hier ist mein Problem.
Ich habe eine Anzahl parallel laufender AJAX Requests, von denen jeder, wenn er fertig ist (stark vereinfacht) eine (vom Request bestimmte) Zahl in eine Tabellenzeile einfügt so dass die Werte in der Tabellenzeile aufsteigend geordnet sind. Der Code zum Einfügen in eine Zeile ist folgender:
function neueZelle (zahl) {
position = bestimmeZellenPosition("Zeile", zahl);
var td = document.getElementById("Zeile").insertCell(position);
td.doSomething(...);
}
Das funktioniert korrekt solange die AJAX Requests sequentiell laufen. Sobald diese parallel laufen, kann es vorkommen, dass beide gleichzeitig dieselbe Position in der Tabelle bestimmen und die Ordnung nicht eingehalten wird.
Beispiel: Request A und Request B haben die Werte 3 und 4 und in der Zeile stehen die Werte 1 und 6. Wenn nun beide gleichzeitig die Funktionen bestimmeZellenPosition() ausführen, werden beide denselben Wert erhalten (und zwar 1, die 2te Zelle). Wenn nun Request A den .insertCell() Aufruf vor Request B ausführt stehen am Ende die Werte 1, 4, 3, 6 in der Tabelle, was falsch ist
Hat jemand eine Idee wie man diesen Fall elegant vermeiden könnte (ohne auf sequentielle AJAX Requests umzusteigen)?
Vielen Dank vorab,
Nils