javascript - 在javascript中实现递归

标签 javascript node.js recursion

我来自c++背景,所以对回调机制不太清楚。 与java脚本混淆以实现递归。请有人帮忙。

这就是我想要实现的目标。

Method 1(on success - call Method2);
Method 2(on success - call Method3);
Method 3(on success - call Method1)

这是我的代码。

function Method1(val1, val2, callback) {
   console.log('Method1' + val1);
   callback(val1, Method3);
}

function Method2(val1, fn) {
  console.log('Method2 ' + val1);
  val1++;
  fn(val1);
}

function Method3(val){
    console.log('Method3 ' + val);
    val++;
    if(val > 1000)  process.exit(0);
    else {
        Method1(val,2, Method2);
    }
}

Method1(1,2,Method2);

一旦我运行它,它就会抛出RangeError:超出最大调用堆栈大小错误。 如何在javascript中实现递归?

编辑: 我正在写一个网络爬虫。 这就是我想要实现的目标。

1. Get the URL to be crawled.
2. Store the content(webpage) in a file. 
3. Parse the content. Get all the links in the file. 
4. call step 2 for each link in the content.

这只能通过递归来实现。我知道必须有终点/导出点。 在这里,我的退出点可能是解析所有网络链接后。它应该退出。

最佳答案

您需要说明何时停止,否则它将继续调用每个方法,从而导致错误。

关于javascript - 在javascript中实现递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766249/

相关文章:

javascript - 使用两个模态时出错 : [$injector:unpr] Unknown provider: $modalInstanceProvider <- $modalInstance

node.js - Nodejs无法连接到云shell上的mongodb

javascript - webpack < 5 默认情况下用于包含 Node.js 核心模块的 Polyfill。这已不再是这种情况

python - 计算连通图

javascript - 为什么这个 javascript onkeypress 事件不起作用?

javascript - 在 $routeProvider 解析功能中找不到 AngularJS 声明的服务

javascript - python3 opencv 不保存可读视频

javascript - 两个队列,一个并发1,另一个并发3

c - 递归构建字符串

java - 在 Java Card 递归编程期间捕获内存异常