我正在創建一個在Chrome WebServer AddOn上運行的瀏覽器工具。服務器通過使用GET
以JSON數組返回的請求提供目錄文件列表(包括isFolder/isFile /文件名值)
我有一個文件夾列表,我需要掃描此文件夾中的所有文件,包括所有文件應該在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的文件。我想我無法做到這一點同步,但如果我異步迭代我怎麼知道我什麼時候完成?
非常感謝!
沒有人有什麼想法? –