我从Mozilla遇到了以下代码示例:
function readDirectory(directory) {
let dirReader = directory.createReader();
let entries = [];
let getEntries = function() {
dirReader.readEntries(function(results) {
if (results.length) {
entries = entries.concat(toArray(results));
getEntries();
}
}, function(error) {
/* handle error -- error is a FileError object */
});
};
getEntries();
return entries;
}
此代码应如何工作?传递给readEntries
的回调函数是异步调用的,所以readDirectory
函数在回调执行并填充条目之前是否已经返回?
修改
我在Chrome中测试了它,实际上它是异步的,函数返回时没有填入条目。 我想要实现的是当用户将文件夹拖放到网站时读取文件夹内容。我正在收听'drop'事件,但是'drop'回调在我甚至用上面的代码列出目录内容之前返回,并且dataTransfer对象被销毁。
网站(例如OneDrive)如何处理文件夹的删除?
答案 0 :(得分:1)
是的,如果readEntries
是异步的,readDirectory
也必须是异步的。我搜索了Mozilla,它还没有记录,async / sync属性。