函数参数中的事件

时间:2015-06-26 18:36:59

标签: javascript function events

我是javascript的新手,我正在尝试通过查看我觉得有趣的在线项目的代码来教自己一些。我正在浏览3D查看器的代码(source)。它允许您拖放要查看的3D数据文件。在代码的下拉位(如下所示)中,有一些事情似乎不清楚:

  1. reader.onload = function(event)...不确定这里的'event'是什么。
  2. reader.readAsText(file); ...不确定为什么这样做,因为reader.readAsBinaryString(file);已经被引用过。
  3. 非常感谢,人们:)。

        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);
            }
        }
    

1 个答案:

答案 0 :(得分:1)

  1. 读取器被实例化并给出一个二进制文件来读取。如果成功,则将其退出代码作为' event'并处理该文件。如果失败,则将错误代码传递为“事件”。并显示错误。单词' event'这是任意的。

  2. 由于javascript的异步特性,它看起来很奇怪。 onload和onerror是事件处理程序。如果reader.readAsText(文件);声明紧跟在reader.readAsBinaryString(file);声明,它们都是在事件处理程序之后,它可能更有意义,但它的行为完全相同。如果这两个语句都失败,则会触发错误,但如果成功,则会触发onload。