¿La variable global en JavaScript no está configurada cuando se usa getJSON?

Aquí está mi código. Si verifico la variable “bromas” por “inspector de google” todo funciona bien. ¡Pero la “alerta” en la última línea muestra una matriz de tamaño 0! Me muck con variables locales / globales?

 (function() { pranks = []; function getAllPranks(){ $.getJSON('list.json', function(data) { $.each(data['pranks'], function(key, val) { pranks.push(val); }); }); } $(document).ready(function(){ getAllPranks(); alert(pranks.length); }); }());  

Tomando su código:

  

$.getJSON es asíncrono. Esto significa que la función de callback ( function(data) ) se ejecuta una vez que el resultado vuelve. Cuando ejecuta alert(pranks.length) , la función no se ha ejecutado porque la respuesta no ha regresado en este momento.

Cambiarlo a:

 $.getJSON('list.json', function(data) { $.each(data['pranks'], function(key, val) { pranks.push(val); }); alert(pranks.length); /* pranks has data now */ });