文件API中的Javascript变量范围
Javascript variable scope in file API
我有一个函数,它接受两个参数:entry,一个文件条目(来自拖放源),以及fileName(所述文件的名称)。
我不确定这是否有帮助,但条目声明为:
var entry = evt.dataTransfer.items[i].webkitGetAsEntry();
我想创建一个数组来描述有关此条目的信息,该数组包括文件名、文件大小、以不同单位表示的文件大小以及用于表示所述文件的单位。我在两个不同的点将数组打印到控制台,一个在.file方法内部(如果我使用了不正确的术语,我很抱歉),另一个在外部。当数组位于.file方法之外时,控制台不会打印数组的值。
我能得到关于如何解决这个问题以及为什么会发生这种情况的帮助吗?我在.file方法之外声明了我的变量,所以我认为我的变量范围是正确的,但显然不是这样。
这是我的功能:
function getFileSize(entry,fileName)
{
var fileData = [];
var i = 0;
var byteSize = ['B','kB','MB','GB','TB'];
fileData.push(fileName);
entry.file(function(file)
{
var fsize = file.size;
var i = 0;
fileData.push(fsize);
while(fsize > 1024)
{
fsize = (fsize / 1024);
i++;
}
fileData.push(fsize.toFixed(2));
fileData.push(byteSize[i]);
console.log(fileData);
});
console.log(fileData);
}
对.file()
的调用是异步的。调用最后一个console.log(fileData)
时,fileData
尚未填充。如果您想将CCD_ 4返回给呼叫者,您还需要使getFileSize()
异步:
function getFileSize(entry, fileName, callback) {
...
var fileData = [];
entry.file(function(f) {
...
callback(fileData);
});
}
相关文章:
- js命名空间和变量范围
- 如何确保变量范围在这个循环中得到维护
- 在两个浏览器选项卡之间共享变量范围
- 文件API中的Javascript变量范围
- javascript和jQuery的嵌套对象函数中的变量范围
- JavaScript 函数变量范围问题
- JavaScript 中变量范围的问题
- Javascript - 揭示对象和变量范围
- 主干.js(具有 Require.js)变量/范围访问问题
- Javascript 变量范围未定义
- 如何绕过javascript变量范围
- IE 8变量范围错误
- 了解 Javascript 变量范围
- 控制变量范围
- 函数之间的Javascript变量范围问题
- 这种减少if语句中声明的变量范围的模式是一种好的做法吗
- 用于未初始化的局部变量的javascript变量范围
- 变量范围
- 请求节点模块变量范围
- Javascript 和 JQuery dom 全局变量范围