Javascript 为什么此数组会丢失$getJSON之外的数据?

Javascript 为什么此数组会丢失$getJSON之外的数据?,javascript,arrays,instagram,Javascript,Arrays,Instagram,我向Instagram发送了一个请求,请求获取追随者ID,一切正常,直到我想使用$.getJSON方法之外的数组。以下是守则的相关部分: var allFollowings = []; $.getJSON("https://api.instagram.com/v1/users/self/follows?access_token="+$.urlParam('access_token')+"&count="+followingsCount+"&callback=?", functi

我向Instagram发送了一个请求,请求获取追随者ID,一切正常,直到我想使用
$.getJSON
方法之外的数组。以下是守则的相关部分:

var allFollowings = [];
 $.getJSON("https://api.instagram.com/v1/users/self/follows?access_token="+$.urlParam('access_token')+"&count="+followingsCount+"&callback=?", function(json) {


   for(var i = 0; i < json.data.length; i++) {
        console.log(json.data[i].id); // this is not empty
        allFollowings[i] = json.data[i].id;
   }
   console.log(allFollowings); // this is also not empty
});
console.log(allFollowings); // this one is empty!!!
var-allfollowers=[];
$.getJSON(“https://api.instagram.com/v1/users/self/follows?access_token=“+$.urlParam('access_token')+”&count=“+followscount+”&callback=?”,函数(json){
for(var i=0;i

显然我做错了什么,这是我第一次遇到这个问题。但我做错了什么?谢谢。

它实际上并没有丢失数据。发生的情况是,您的
$.getJSON
回调函数在上次
console.log之后被异步调用(如下所示)调用。

getJSON
调用回调之前,执行脚本末尾的
console.log
。这是javascript的异步特性。

虽然我完全同意您和您对javascript个性的评估,但说它不是同步语言有点言过其实。与其说是语言,不如说是本例中的
.getJSON
函数;)在$.getJSON之后的另一个函数中,如何将其用作参数?因为现在它在函数中是空的?只需调用另一个函数,并在getJSON回调中作为参数传递
allfollings
。感谢您的观察,Michael,我认为现在它是正确的。:)是的,甚至比我更谨慎,我想我会投反对票;)