我来自 c++ 背景,所以对回调机制不太清楚。与 java-script 混淆以实现递归。有人请帮忙。
这就是我想要实现的。
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: Maximum call stack size exceeded错误。如何在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.
这只能在递归中实现。我知道必须有终点/出口点。一旦我解析了所有网络链接,我的退出点可能就在这里。它应该退出。