2012-01-04 3 views
0

내 아약스 응용 프로그램에서 전역 변수를 만드는 다른 함수가 호출되는 재귀 함수를 사용하려고하는데 그 변수를 사용하고 싶습니다. 재귀 함수 내부. 그러나 재귀 함수 내에서 전역 변수에 액세스 할 수 없기 때문에 문제가 발생합니다 (해당 함수를 자체 호출하면 사용할 수 있지만). 재귀 함수의 코드는 아래와 같습니다.재귀 자바 스크립트/아약스 함수 : 함수 내에서 전역 변수 집합에 액세스 할 수 없습니다.

ajaxCity.displayCell()은 숫자 배열을 포함하는 window.cells [] 변수를 설정합니다. 아이디어는 각 숫자에 대해 tree() 함수를 호출하는 것입니다.

function tree (topCell) { 
    var ajaxCity = new Ajax(); 
    ajaxCity.displayCell(topCell); 

    for (var i = 0; i < window.cells[topCell].cKids.length; i++) { 
     tree(window.cells[topCell].cKids[i]); 
    } 
} 

window.cells [] 변수 내가 한 번 기능을 실행하지만, 내가 상상하고있어 방법을 작동하도록 어떻게 프로세스를 변경해야 후 사용할 수 있습니까?

도움 주셔서 감사합니다.

편집 : 여기에 오류가 있습니다. 내가 다시 트리 함수를 호출하는 경우, 그것은 하나 일 것 "수준"깊은, 다시 오류를 줄

TypeError: window.cells[topCell] is undefined 

============== ==

James Montagne, 당신이 지적했듯이, 문제는 내가 아약스 요청이 돌아 오기를 기다려야한다는 것입니다. 다시 한 번 감사드립니다!

답변

2

나는 여기에 변수 이름을 기반으로 몇 가지 가정을 만들고 있어요,하지만 난

ajaxCity.displayCell(topCell); 

는 아약스 호출, window.cells...의 생성됩니다있는 결과를 만들 것입니다 그 것을 가지고.

이 경우 AJAX가 비동기입니다 (첫 번째 A). AJAX 요청을 한 다음 즉시 해당 요청의 결과를 사용하려고 시도하면 결과를 찾을 수 없습니다. 이는 AJAX 요청이 아직 반환되지 않았기 때문입니다. 대신 AJAX 요청의 콜백에서 결과를 사용해야합니다.

0
window.cells=new Array(); 

입니다.

관련 문제