【发布时间】:2013-12-07 06:17:03
【问题描述】:
我正在使用 CEF 在 javascript 中构建本机桌面应用程序,并且我有从 CEF 访问文件系统的 API。我有一个情景, 我需要在其中获取特定目录中所有文件的名称(可能有目录树)。我需要得到结果数组,我正在使用 jquery 承诺。我不明白的是:我什么时候解决获得最终结果数组的承诺?
/*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);
});
如果我做错了,请建议任何其他技术:)
【问题讨论】:
-
当您可以轻松使用更好的 Promise 库时,尽量不要使用 jQuery Promise。
标签: javascript promise jquery-deferred chromium-embedded