J'ai un algorithme, qui fonctionne de façon récursive relativement profonde, de sorte qu'une taille maximale de pile dépassée par l'exception survienne finalement (sans être une récursivité sans fin!).Comment savoir quand la pile Javascript est pleine?
Mon algorithme peut se décomposer lui-même, pour procéder de manière asynchrone en utilisant dès que possible, mais cela ralentit chaque fois l'exécution massivement. Je voudrais avoir un moyen (rapide) de connaître le pourcentage d'utilisation de la pile, donc mon algorithme peut décider de continuer de façon synchrone s'il est inférieur à 90%, mais continuer de façon asynchrone quand il est supérieur. Je sais que cette valeur doit être interne, mais existe-t-il un moyen d'y accéder? D'un autre côté, je pourrais imaginer d'attraper la taille maximale de la pile dépassée erreur, mais je read here, que ce n'est pas possible (pourquoi pas? Lancer cette exception reviendrait à retourner à l'appelant, ce qui devrait effectivement réduire la taille de la pile et les anciennes entrées de pile devraient toujours être intactes pour cela ???)
Bien sûr, une façon serait de passer une variable de compteur à travers toutes mes fonctions, mais c'est gênant. Aussi, il n'est pas clair, à quelle valeur de comptage ma pile est à 90%, parce que je ne sais pas, quelle est la taille de la pile et quelle est la taille de chacune de mes images de pile.
Donc en fait, il semble que JavaScript soit né pour échouer dans ce cas même si le programmeur pouvait l'éviter, s'il avait accès à l'information dont il avait besoin - quelque part mais gardé secret pour des raisons inconnues?
S'il vous plaît montrer votre travail. Cela ressemble à un problème avec votre algorithme, pas comment l'interpréteur javascript l'exécute. Qu'est-ce que vous exécutez cela? Noeud ou un navigateur? Qu'est-ce que votre algo essaie même d'accomplir? Nous avons besoin de ces détails. – Soviut
Je ne peux pas fournir "l'algorithme" - il traite les données et s'installe récursivement en fonction des données. Il n'y a pas de problème avec mon algorithme. Lorsque la structure de données est imbriquée suffisamment profondément, ce qui arrive en pratique, la pile va se renverser sans avoir de récursion sans fin. –
Si votre récursivité est si importante qu'elle déborde de la pile, vous devez réécrire votre algo, de même que la récursion de courte durée. – Soviut