Tach!
Jetzt bin ich verwirrt.
Ja, und du hast mich auch irregeführt, weil du deinen Code nicht ordentlich eingerückt hast. So hab ich angenommen, dass getBuildingInformationForEach vor dem lupus-Aufruf zu Ende ist.
counter ist definiert in getBuildingInformationForEach(), müsste also in app.get('/count_buildings', ...); doch existieren?
Ja. Es ist nun nicht der Geltungsbereich, sondern die zeitliche Reihenfolge der asynchronen Ausführung, die du berücksichtigen musst. Wenn irgendetwas einen Callback aufruft, nachdem es seine Arbeit erledigt hat, dann kannst du sämtlichen Code, der auf das Ergebnis angewiesen ist, nur in diesen Callback-Aufruf schreiben, oder in Code, der davon aus aufgerufen wird. Fortgeschrittene nehmen Promises, um damit die Verschachtlungstiefe zu verringern und den Code besser trennen zu können.
Die Console.log() innerhalb app.get('/count_buildings', ...); werden aus irgendeinem Grund nicht ausgeführt.
Die Funktion lupus() hat sich entschieden, die anonyme Funktion mit dem 'All done' drin, die du als vierten Parameter übergeben hast, aufzurufen. Warum auch immer.
Die Callbacks in den app.get()-Aufrufen werden auch aus irgendeinem Grund nicht mehr angesprochen. Ich nehme an, ihr Aufruf kommt einfach zu spät und der Router ist bereits fertig mit Routen, so dass deren Routen nicht mehr berücksichtigt werden können, weswegen dann auch nicht mehr ihre Callbacks aufgerufen werden können.
dedlfix.