我是javascript的新手,我正在尝试通过查看我觉得有趣的在线项目的代码来教自己一些。我正在浏览3D查看器的代码(source)。它允许您拖放要查看的3D数据文件。在代码的下拉位(如下所示)中,有一些事情似乎不清楚:
非常感谢,人们:)。
function onFileDrop(evt) {
evt.stopPropagation();
evt.preventDefault();
var file = evt.dataTransfer.files[0];
var splits = file.name.split('.');
if (splits[splits.length - 1] == 'json') {
var reader = new FileReader();
//reader.onerror = errorHandler;
//reader.onprogress = updateProgress;
//reader.onabort =
//reader.onloadstart =
//reader.onload =
reader.readAsBinaryString(file);
reader.onload = function (event) {
var meshEntityList = JSON.parse(event.target.result);
createScene(meshEntityList);
};
reader.onerror = function (event) {
alert('Cannot read file!');
};
reader.readAsText(file);
}
}
答案 0 :(得分:1)
读取器被实例化并给出一个二进制文件来读取。如果成功,则将其退出代码作为' event'并处理该文件。如果失败,则将错误代码传递为“事件”。并显示错误。单词' event'这是任意的。
由于javascript的异步特性,它看起来很奇怪。 onload和onerror是事件处理程序。如果reader.readAsText(文件);声明紧跟在reader.readAsBinaryString(file);声明,它们都是在事件处理程序之后,它可能更有意义,但它的行为完全相同。如果这两个语句都失败,则会触发错误,但如果成功,则会触发onload。