Häufig baut man bei einem neuen Programm erst eine Funktion, die eine Aktion durchführt. Klappt das mit dem Beispiel, ruft man diese jeweils mit jedem Eingabewert auf. Die Funktion getRating(id) z.B. würde einen Wert abfragen und weiterleiten, und klappt das mit der Testid, kommt ein getAllRatings() dazu, das erstmal alle ids sammelt und dann getRating aufruft:
function getAllRatings() {
...
for(var i=0; i<ids.length;i++) {
getRating(ids[i]);
}
}
Ein an sich sinnvoller Weg, um die Teilprobleme Schritt für Schritt zu lösen. Nur: Es kann der unperformante Ansatz sein.
getRating sei nun eine Funktion, die per httpRequest mit einem Server redet, den zugehörigen Kommentar zur id aus der Datenbank holt und schließlich die Bewertung (den Spamfaktor) des Kommentars berechnen lässt. Für jede id, also schlimmstenfalls für jeden Kommentar, der je im Blog abgespeichert wurde, wird bisher jede dieser Aktionen einzeln durchgeführt. Bei der Datenbankabfrage und auch bei der Serverkommunikation ist das äußerst ungünstig, da sich so die Wartezeiten addieren bzw. die Datenbank die Abfrage nicht optimieren kann.
Deshalb besser:
function getAllRatings() {
...
getRating(ids);
}
Wobei getRating nun erkennen muss, dass der Parameter id ein Array ist und es dieses in einem Schwung zum Server geben kann:
function getRating(id) {
...
if (id.constructor == Array) {
id = id.join(';');
}
httpRequest.send('id='+id);
}
Auf der Serverseite die ids gesammelt der Datenbank zu geben ist dann kein Problem mehr. Überhaupt ist hier die Umsetzung nicht das Problem und den meisten Programmierern die Mechanismen dahinter auch klar: Ajax-Aufrufe und die Datenbankabfragen minimieren. Trotzdem ist es für einen von "divide and conquer" geprägten Programmierer ein Schritt zu erkennen, dass der an sich logisch aufgebaute Code hier nochmal umgebaut werden sollte.