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



这让我抓狂。我也无法用萤火虫来解决这个问题。有人能解释一下这里发生了什么吗?

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

<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解释器将其放入一个队列中,为操作完成做好准备,然后允许执行其余代码。

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

相关内容

  • 没有找到相关文章

最新更新