Asynchrone Aufrufe und Rekursion mit Node.js

Ich versuche, einen Rückruf auszuführen, wenn eine rekursive Funktion vollständig abgeschlossen ist, die unbestimmt lange andauern kann. Ich kämpfe mit asynchronen Problemen und habe gehofft, hier Hilfe zu bekommen. Der Code mit demrequest Modul ist wie folgt:

var start = function(callback) {
  request.get({
    url: 'aaa.com'
  }, function (error, response, body) {
    var startingPlace = JSON.parse(body).id;
    recurse(startingPlace, callback);
  });
};

var recurse = function(startingPlace, callback) {
    request.get({
        url: 'bbb'
    }, function(error, response, body) {
        // store body somewhere outside these funtions
        // make second request
        request.get({
            url: 'ccc'
        }, function(error, response, body) {
            var anArray = JSON.parse(body).stuff;
            if (anArray) {
                anArray.forEach(function(thing) {
                    request.get({
                        url: 'ddd'
                    }, function(error, response, body) {
                        var nextPlace = JSON.parse(body).place;
                        recurse(nextPlace);
                    });
                })
            }
        });
    });
    callback();
};

start(function() {
    // calls final function to print out results from storage that gets updated each     recursive call
    finalFunction();
});

Es scheint, dass, sobald mein Code hinter dem @ geforn der @ -Schleife der verschachtelten Anforderungen wird die Anforderung verlassen und der erste Funktionsaufruf beendet, während die rekursiven Aufrufe noch ausgeführt werden. Ich möchte, dass die Iteration auf höchster Ebene erst beendet wird, wenn alle verschachtelten rekursiven Aufrufe abgeschlossen sind (von denen ich nicht weiß, wie viele es gibt).

Jede Hilfe wird sehr geschätzt!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage