나는 C++ 배경에서 왔기 때문에 콜백 메커니즘에 대해서는 명확하지 않다. 자바 스크립트와 혼동하여 재귀를 달성하지 못했습니다. 누군가 제발 도와주세요.자바 스크립트에서 재귀를 실현
이것은 내가 달성하기를 원하는 것입니다.
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 : 최대 호출 스택의 크기가 오류를 초과했습니다. 자바 스크립트에서 재귀를 달성하는 방법?
편집 : 나는 웹 크롤러를 쓰고 있습니다. 이것이 내가 원하는 것입니다.
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.
이
은 재귀에 달성 될 수있다. 나는 종점/종점이 있어야한다는 것을 이해했다. 일단 모든 웹 링크를 구문 분석하면 내 종료 지점이 될 수 있습니다. 종료해야합니다.
재귀 흐름이 멈추지 않습니다. – kbec
지금 추가했습니다. 백만 시간 이상 재귀를 수행해야합니다. – swastican
자바 스크립트는 꼬리 호출 최적화를 지원하지 않습니다. 모든 것이 스택에 푸시되지만 끝까지 도달 할 때까지 팝업되지 않습니다. 종료 조건이 충족되기 전에 스택 크기를 최대화합니다. – thgaskell