Ограничение глубины рекурсии в NodeJS - PullRequest
0 голосов
/ 22 апреля 2020

Есть ли способ ограничить глубину рекурсии в 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 --stack-size=5000 so.js 
Took 63935 trips before bailing

Опция --stack-size является одной из опций Node V8. Вы можете увидеть список всех этих опций, запустив node --v8-options.

. Я хочу знать, есть ли способ в NodeJS явно ограничить глубину рекурсии некоторым указанным c числом.

У меня нет конкретной конечной цели c здесь - я просто пытаюсь понять, что инструменты NodeJS делают и не имеют по сравнению с другими языками, на которых я работаю. Это нормально, если у узла этого нет - я просто учусь здесь:)

1 Ответ

0 голосов
/ 23 апреля 2020

На основании проведенного мною исследования это кажется невозможным. Этот только что открытый запрос функции в репозитории NodeJS, вероятно, поможет разобраться в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...