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。如果不在同一范围内,您需要发布代码结构的更详细描述。希望我能多次投票。这解决了我多年来遇到的一个问题。希望我能多投一次票。这解决了我多年来遇到的一个问题。