Javascript - 值存在,然后消失,然后再次出现?

标签 javascript jquery multidimensional-array scope string-parsing

这让我发疯。我也无法通过 Firebug 解决这个问题。有人可以解释一下这是怎么回事吗?

基本上,我有一个传入的文本文件,其中每一行都包含一个以竖线分隔的记录。我将它们分成字符串数组的数组,以便稍后在自动完成文本框中使用。代码如下:

<script type="text/javascript">
$(function () {

    var rawData = new Array();
    $.get("/sample.txt",
        function (data) {
            var raw = data.split('\n');
            for (var i = 0; i < raw.length; i++) {
                rawData.push(raw[i].split('|'));
            };
            alert(rawData); // 1st sanity check
        }
    );
    alert(rawData); // 2nd sanity check
    alert(rawData); // 3rd sanity check

出于某种原因,第一次健全性检查工作正常 - 它按我的预期显示了所有数据。第二个显示 rawData 为空...但第三个再次显示所有数据。删除第一个健全性检查不会影响第二个和第三个。

这怎么可能?为什么会这样呢?这让我发疯。

最佳答案

您忘记了 get() 函数是一个异步函数。您在其中定义的回调仅在文件加载后才会被调用。本质上,JavaScript 解释器将其放入队列中,等待操作完成,然后允许执行其余代码。

因此,回调中的警报将反射(reflect)文件已加载的事实。外部的警报将在该文件加载之前执行。当然,您个人等待消除第二个警报的时间越长,加载所有数据后第三个警报将执行的更改就越好。

关于Javascript - 值存在,然后消失,然后再次出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287345/

相关文章:

c++ - 无法将偏移索引计算到 3D 数组中

创建一个函数,清除二维数组中的每个位置并使其成为默认的 '_' 字符单元格

javascript - 添加淡入淡出效果到悬停脚本上的 jQuery 图像替换

javascript - 背景附件 : fixed is not working on mobile devices

javascript - jQuery Datepicker 未从此 min 属性获取 minDate

javascript - 一个好的 javascript/jquery 配色方案生成器(如 kuler)

javascript - 尝试清除选择

javascript - 拦截XHR请求,javascript React

jquery - 将json加载到变量中

c - 将数组简化为指针的 K&R 方法