我来自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/