我正在使用CEF在javascript中構建原生桌面應用程序,並且我有API來從CEF訪問文件系統。我有一個senario, 其中我需要獲取特定目錄中所有文件的名稱(可能是目錄樹)。我需要得到結果數組,我正在使用jQuery的承諾。我不明白的是:我什麼時候解決承諾以獲得最終結果數組?遞歸函數內的Asynchronus調用
/*read all directories under this and get path*/
var result = [];
function _processEntries(dirPath) {
var dirEntry = new NativeFileSystem.DirectoryEntry(dirPath), deferred = new $.Deferred();
/*async call*/
dirEntry.createReader().readEntries(
function (entries) {
for (var i = 0; i < entries.length; i++) {
if (entries[i].isDirectory) {
_processEntries(entries[i].fullPath).done(function() {
deferred.resolve(result);
});
} else {
result.push(entries[i].fullPath);
}
}
},
function (error) {
console.log("Failed while reading dir:", error);
}
);
return deferred.promise();
}
//調用函數
_processEntries("C:/Users/abc").done(function(result){
console.log("FILES ARRAY:",result);
});
請提出任何其他技術,如果我做錯了:)
儘量不要使用jQuery的承諾時,你可以很容易地使用更好的承諾庫。 – Bergi