我正在开发一个大量使用 Javascript 和 jQuery 的 Web 应用程序。
app
我基本上在网页加载时创建一个对象并init()
在页脚中调用该方法。
var app = new App();
app.init();
这些是该init()
方法中的第一行代码。
// Load up the index
app.loadIndex();
alert(hashtag_index);
这些是该loadIndex()
方法的几行。
hashtag_index = [];
// Load the Topic JSON File
$.ajax({
url : './data/index.json',
type : 'GET',
dataType : 'json',
.
.
.
// If the file loading is successful, save the index data
success : function(data){
var raw_index = [];
$.each(data, function(key, val) {
raw_index.push(data[key]);
});
// Add the hashtag object to global hashtag_index
hashtag_index = raw_index;
}
});
基本上,该loadIndex()
方法所做的是加载一个大约 135kb 的 json 文件,并将数据作为对象加载到hashtag_index
变量中。该hashtag_index
变量是全局定义的,因此可以全局访问。
变量标签索引有 8 个不同的Object
数组。但是在我尝试使用alert()
该变量时,该变量尚未初始化。
但alert()
只返回一条空白消息。当我将此作为消息返回时:
alert(typeof(hashtag_index))
我得到undefined
消息。
但是现在我确定该变量已加载,因为当我通过 Google Chrome 的控制台访问该变量时,我可以看到该变量已加载并且所有对象都在其中。
我解决问题的唯一方法是使用这行代码:
// Load up the index
app.loadIndex();
setTimeout( function(){
alert(hashtag_index);
}, 500);
通过让 javascript 睡眠 500 毫秒,我已经给了足够的时间来加载它。
当然,我尝试了以下解决方案,但没有一个成功:
解决方案1:(进入无限循环)
// Load up the index
app.loadIndex();
while(!hashtag_index.length > 0) {
continue;
};
alert(hashtag_index);
解决方案2:(进入无限循环)
// Load up the index
app.loadIndex();
while(hashtag_index.length == 0) {
continue;
};
alert(hashtag_index);
解决方案3:(进入无限循环)
// Load up the index
app.loadIndex();
while(typeof hashtag_index === 'undefined') {
continue;
};
alert(hashtag_index);
解决方案4:*(进入无限循环)
// Load up the index
app.loadIndex();
while(typeof hashtag_index == null) {
continue;
};
alert(hashtag_index);
现在我的问题是如何在不引起任何未来问题的情况下绝对解决这个问题。我试图用以前的解决方案来解决这个问题,但它们都没有成功。