我是 javascript 的新手,我正在尝试通过查看我觉得有趣的在线项目的代码来自学一些 javascript。我正在浏览 3D 查看器的代码 ( source )。它允许您拖放要查看的 3D 数据文件。在代码的 drop bit 中(如下所示),有几处似乎不清楚:
- reader.onload = function (event) ... 不确定这里的“事件”是什么。
- reader.readAsText(file);... 不确定为什么这样做,因为 reader.readAsBinaryString(file);之前已经调用过。
在此先感谢各位 :)。
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);
}
}
最佳答案
reader 被实例化并给出一个二进制文件来读取。如果成功,它会将其退出代码作为“事件”传递并处理该文件。如果失败,它会将错误代码作为“事件”传递并显示错误。这里的“事件”一词是任意的。
由于 javascript 的异步特性,它看起来很奇怪。 onload 和 onerror 是事件处理程序。如果 reader.readAsText(file);语句紧跟在 reader.readAsBinaryString(file) 之后;语句,并且它们都出现在事件处理程序之后,这可能更有意义,但它的行为完全相同。如果这两个语句都失败,则会触发错误,但如果其中一个成功,则会触发 onload。
关于javascript - 函数参数中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079997/