如何访问onreadystatechange之外的数组(范围问题)

时间:2016-11-16 13:40:46

标签: javascript arrays ajax scope xmlhttprequest

我有一个函数ajaxCall(),它调用一个带有数组的json文档。 我从xmlhttp.responseText返回的数据存储在数组arrayImages中。我需要访问函数ajaxCall()之外的数组arrayImages,因为我需要该数组的长度,arrayImages.length。

function ajaxCall(){
    xmlhttp.onreadystatechange = function(){

        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            arrayImages = JSON.parse(xmlhttp.responseText);
            output(arrayImages);

        } 
    }

    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

我需要这样的功能

var arrayLength = arrayImages.length;

1 个答案:

答案 0 :(得分:1)

由于onreadystatechange是一个异步函数,因此无法确定何时返回数组。因此,处理它的唯一方法是使用回调函数在数组完成时输出数组的length。 像这样:

function ajaxCall(){
    xmlhttp.onreadystatechange = function(){

        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            arrayImages = JSON.parse(xmlhttp.responseText);
            output(arrayImages);

        } 
    }

    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

function output(array)
{
   //your other stuff here
   var arrayLength = array.length;
}