Ich habe Probleme beim Aktualisieren einer globalen Variablen in meiner Knoten App. Kann jemand meinen Code ansehen und mich wissen lassen, was schief läuft? Ich habe eine Dowhile-Schleife definiert, die ausgeführt wird, solange mein HTTP-Antwortobjekt nicht "next" definiert hat. Innerhalb der Schleife laufen die Dinge wie erwartet und new_json.next ist definiert, aber die while-Bedingung gibt einen Fehler zurück, weil new_json.next dort nicht definiert ist. Ich bin ein wenig neu in Javascript, also irgendwie ist mein variabler Bereich ausgeschaltet, aber ich kann nicht herausfinden, wie man Dinge richtig macht, basierend auf anderen Fragen.Problem beim Aktualisieren der globalen Variablen in Javascript
function make_pagination_request(json, create_response_data) {
var new_json={};
do {
var options = {
host: slug + '.nationbuilder.com', //should be replaced to be site-agnostic
path: json.next,
method: "GET",
json: true,
headers: {
"content-type": "application/json",
"accept": "application/json"
},
}
var req = https.get(options, req_callback);
function req_callback(response) {
response.on('data', function(chunk) {
str += chunk;
});
response.on('end', function(new_json) {
new_json=JSON.parse(str);
new_results = new_json.results
results= results.concat(new_results);
console.log("combinedlength: " + results.length)
console.log(new_json.next);
});
}
} while (new_json.next.includes("api"));
Ich hätte wissen müssen, dass es so etwas war. Das beginne ich erst zu verstehen und es ist die Wurzel einiger meiner anderen Probleme. Am Ende habe ich einfach die Funktion make_pagination_request aufgerufen. –
Die asynchrone Natur des Javascript-Codes und die synchronen Konstrukte, die in der Sprache enthalten sind, waren eine große Quelle von Problemen für viele Programmierer. Ich sehe in Ihrem Kommentar, dass es Ihnen gelingt, das Problem zu lösen, indem Sie die gleiche Funktion erneut aufrufen. Selbst wenn es funktioniert, empfehle ich Ihnen, nach einer besseren Lösung zu suchen, denn wenn sich die Funktion selbst viele Male aufruft, werden Sie einen Stapelüberlauf erreichen. – yeiniel
Ich dachte, ich hätte bereits einen Stapelüberlauf –