限制NodeJS中的递归深度。

问题描述 投票:0回答:1

是否有办法限制 深度 NodeJS中的递归,而不是NodeJS中的 --stack-size 选项?

我知道NodeJS会让你通过下面的 --stack-size 即像这样的程序。

const recurse = (num=0) => {
  context.num++
  recurse(++num)
}
const context = {
  num:0
}
try {
  recurse(context)
} catch(e) {
  console.log('Took ' + context.num + ' trips before bailing')
}

默认情况下会输出这样的内容。

$ node so.js 
Took 12530 trips before bailing

然而,您可以使用 --stack-size 来告诉 node 在退出之前,你想让堆栈变得多大(以 kb 为单位)。使用更大的栈,你会得到更多的递归。

$ node --stack-size=5000 so.js 
Took 63935 trips before bailing

栈的 --stack-size 选项是 Node 的 V8 选项之一。 您可以通过运行以下命令查看所有这些选项的列表 node --v8-options.

我想知道的是,在NodeJS中是否有一种方法可以明确地用一些特定的数字来限制递归深度。

我在这里并没有一个具体的最终目标--我只是想了解与其他语言相比,NodeJS有什么工具,没有什么工具。 如果node没有这些也没关系--我只是在这里学习 :)

node.js recursion callstack
1个回答
0
投票

根据我所做的研究,这似乎是不可能的。 这是刚开放的功能请求 在NodeJS仓库中,可能会有助于了解事情的真相。

© www.soinside.com 2019 - 2024. All rights reserved.