La construction d'une promesse de la chaîne de manière récursive en javascript - considérations relatives à la mémoire

Dans cette réponse, une promesse de la chaîne est construite de manière récursive.

Légèrement simplifié, nous avons :

function foo() {
    function doo() {
        //always return a promise
        if (/* more to do */) {
            return doSomethingAsync().then(doo);
        } else {
            return Promise.resolve();
        }
    }
    return doo(); //returns a promise
}

Sans doute cela donnerait lieu à une pile d'appel et une promesse de la chaîne d' - ie "profonde" et "large".

Je m'attends à une mémoire de spike plus grand que l'autre l'exécution d'une récursivité ou la construction d'une promesse de la chaîne d'seule.

  • Est-ce donc?
  • Quelqu'un a examiné les problèmes de mémoire de la construction d'une chaîne de cette façon?
  • La mémoire de consommation diffèrent entre les promesses libs?
Pouvez-vous exécuter sur JSPerf? Pourquoi suppose que lorsque vous pouvez le tester?
"on peut supposer que cela donnerait lieu à une pile d'appel" non, car il est asynchrone, la pile d'appel n'développer hors de contrôle.
Je ne suis pas sûr de savoir pourquoi cela a été downvoted, c'est une excellente question.
vous de retour d'une fonction, et non le résultat de l'appel d'une fonction, il n'est donc pas "vraiment" récursive dans une charge de travail d'estimation de sens. seulement si le retour a dû attendre sur l'exécution serait-il obtenir empilés...
Je vais attendre. Benjamin est en effet rapide, je veux dire de 6 minutes pour que la réponse est juste vulgaire 🙂

OriginalL'auteur Roamer-1888 | 2015-04-28