【发布时间】:2018-02-02 09:38:08
【问题描述】:
我遇到了来自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)如何处理文件夹的删除?
【问题讨论】:
-
好像 getEntries 不是异步的。
标签: javascript google-chrome-extension