Chrome WebServer AddOn에서 실행되는 브라우저 도구를 만들고 있습니다. 서버는 GET
요청을 JSON 배열 (isFolder/isFile/filename 값 포함)로 반환하여 디렉터리 파일을 제공합니다.
이 폴더의 모든 파일을 검사해야하는 폴더 목록이 있습니다. pushArray에서 리턴되어야하는 서브 디렉토리.
이제 대개 반복적 인 함수를 사용하여이 작업을 반복합니다. $.get
을 사용할 때 나는 비동기 요청을 가지고 있으며 그때까지 반복하고 모든 파일 목록을 반환하는 방법을 모릅니다. 나는 .when().done()
으로 시도했지만 재귀 대신에 그것을하는 방법에 대한 생각이 부족하다고 생각합니다.
다음 코드는 작동하지 않으며 이해하지만 왜 내가 지금까지했던 : 배열에 나열된 모든 파일이 포함
function recursiveFileRead(data, pushArray) {
var val = data; //data contains
val = String(val).trim() + "?json=1" //required so the server gives back the json object
//get list of files and folder in a json object (async!)
var callBack = $.get(val, function(val) {
json = val;
//loop through json object.
$.each(json, function(i, value) {
//if file push to array
if(value.isFile) {
pushArray(value.filename);
} else {
//if folder recursively run through the subfolders
recursiveFileRead(data, pushArray)
};
});
});
$.when(callBack()).done(function() {
//return pushArray
});
}
후, 나는 그 파일을 ZIP하는 작업을 수행해야합니다. 나는이 동기를 수행 할 수 없을 것 같아요,하지만 내가 비동기 적으로 반복한다면 내가 어떻게 완료되었는지 알 수 있습니까?
고맙습니다.
을 기반으로? –