Javascript Can';t使用ajax将项目追加到数组中

Javascript Can';t使用ajax将项目追加到数组中,javascript,jquery,ajax,arrays,instagram,Javascript,Jquery,Ajax,Arrays,Instagram,我试图将Instagram图像的链接值附加到一个数组中。链接值在控制台中显示良好,但在ajax函数之后,我的数组长度为0。控制台中所有链接之前也会显示“0” 我有一个想法,这个问题是由异步运行的ajax引起的,因此js代码的其余部分实际上是在任何附加到$images之前运行的,但我不知道如何避免这个问题。这是我的代码: $liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_to

我试图将Instagram图像的链接值附加到一个数组中。链接值在控制台中显示良好,但在ajax函数之后,我的数组长度为0。控制台中所有链接之前也会显示“0”

我有一个想法,这个问题是由异步运行的ajax引起的,因此js代码的其余部分实际上是在任何附加到$images之前运行的,但我不知道如何避免这个问题。这是我的代码:

$liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_token + '&COUNT=20';
$images = []

$.ajax({
    type:'get',
    dataType:'jsonp',
    cache: false,
    url: $liked,
    success: function(data) {
        for (var i = 0; i < data.data.length; i++) {
            console.log(data.data[i].images.standard_resolution.url);
            $images.push(data.data[i].images.standard_resolution.url);
        }

    }
});
console.log($images.length);
https://api.instagram.com/v1/users/self/media/liked?access_token=“+$access_token+”&COUNT=20';
$images=[]
$.ajax({
类型:'get',
数据类型:'jsonp',
cache:false,
url:$liked,
成功:功能(数据){
对于(var i=0;i
console.log将在ajax调用结束之前运行;编写代码或在数据循环结束后立即登录success函数

比如:

https://api.instagram.com/v1/users/self/media/liked?access_token=“+$access_token+”&COUNT=20';
$images=[]
$.ajax({
类型:'get',
数据类型:'jsonp',
cache:false,
url:$liked,
成功:功能(数据){
对于(var i=0;i
但是为什么在ajax调用之后,
$images
的长度为0?数据被推入数组后不会留在那里吗?好的,现在我得到了正确的数组长度。这是否意味着我所有使用这个填充数组的函数都需要从success块中调用?通常是的,但这取决于您的需要和implementation@jmazz如果您希望代码被隔离(函数/对象之间不太依赖)您可以在
success
函数中引发一个事件,并将新数据通知所有订阅者。看看或
$liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_token + '&COUNT=20';
$images = []

$.ajax({
    type:'get',
    dataType:'jsonp',
    cache: false,
    url: $liked,
    success: function(data) {
        for (var i = 0; i < data.data.length; i++) {
            console.log(data.data[i].images.standard_resolution.url);
            $images.push(data.data[i].images.standard_resolution.url);
        }
        console.log($images.length); // here the array is filled with response data
    }
});