Javascript 从异步函数设置全局变量

Javascript 从异步函数设置全局变量,javascript,jquery,Javascript,Jquery,嗨,我有以下内容 var g = new Array() ; $.getJSON(google, function(data) { var i = 0 ; $.each(data.items, function() { var obj = new res(i, this.title, this.snippet, this.formattedUrl, 0) ; g.push(obj) ; i=i+1 ; }); }); 我需要能够访问异步函数之外的数

嗨,我有以下内容

var g = new Array() ; 

$.getJSON(google, function(data) {
  var i = 0 ; 
  $.each(data.items, function() {
    var obj = new res(i, this.title, this.snippet, this.formattedUrl, 0) ; 
    g.push(obj) ; 
    i=i+1 ;
  });
});

我需要能够访问异步函数之外的数组。

严格回答有关如何设置全局的部分,一种常见的方法是为应用程序创建名称空间,如

window.App = {}; // or just App = {};
然后把全球的东西放进去

App.g=[]

现在,您可以从任何地方访问名称空间


注意,您仍然需要知道何时可能会有修改全局变量的未完成请求。

严格回答有关如何设置全局变量的部分,一种常见的方法是为应用程序创建名称空间,如

window.App = {}; // or just App = {};
然后把全球的东西放进去

App.g=[]

现在,您可以从任何地方访问名称空间

注意:您仍然需要注意修改全局变量的未完成请求的时间。

您可以选择使用比全局变量更简单的.data

它的工作方式是如下设置元素:

$('body').data('g', mydata);
$('body').data('g');
任何位置,并按如下方式检索:

$('body').data('g', mydata);
$('body').data('g');
当然,它可以在任何元素上,而不仅仅是在主体上。

您可以选择使用比全局变量更简单的.data

它的工作方式是如下设置元素:

$('body').data('g', mydata);
$('body').data('g');
任何位置,并按如下方式检索:

$('body').data('g', mydata);
$('body').data('g');

当然,它可以在任何元素上,而不仅仅是在主体上。

请格式化您的代码如果您在异步函数之外使用数组,您如何知道它处于正确的状态?如果g与getJSON调用在同一范围内,那么您的匿名函数是一个闭包,并且已经可以访问g。如果它不在同一范围内,您需要发布代码结构的更详细描述。请格式化您的代码如果您在异步函数之外使用数组,您如何知道它处于正确状态?如果g与getJSON调用在同一范围内,那么您的匿名函数是一个闭包,并且已经可以访问g。如果不在同一范围内,您需要发布代码结构的更详细描述。希望我能多次投票。这解决了我多年来遇到的一个问题。希望我能多投一次票。这解决了我多年来遇到的一个问题。