我正在尝试在 JavaScript 中开发一个类,我可以使用它来轻松访问由 AJAX 请求收集的大量数据。唯一的问题是我需要让类的成员只有在 AJAX 调用完成后才能访问。理想情况下,我想结束的是我可以在脚本中调用它的东西:
courses.getCourse('xyz').complete = function () {
// do something with the code
}
这只会在 AJAX 调用完成并且“类”中的数据结构可以使用之后触发。理想情况下,我不想为类中的每个函数创建一个 .complete 成员
到目前为止,这是我试图做的“类”:
var model_courses = (function() {
var cls = function () {
var _storage = {}; // Used for storing course related info
_storage.courses = {}; // Used for accessing courses directly
_storage.references = new Array(); // Stores all available course IDs
var _ready = 0;
$.ajax({
type: "GET",
url: "data/courses.xml",
dataType: "xml",
success: function(xml) {
$(xml).find("course").each(function() {
_storage.courses[$(this).attr('id')] = {
title : $(this).find('title').text(),
description : $(this).find('description').text(),
points : $(this).find('points').text()
}
_storage.references.push($(this).attr('id'))
})
}
})
console.log(_storage.courses)
}
cls.prototype = {
getCourse: function (courseID) {
console.log(cls._storage)
},
getCourses: function () {
return _storage.courses
},
getReferences: function (),
return _storage.references
}
}
return cls
})()
目前 getCourse 将在 AJAX 请求完成之前被触发,显然它没有数据可以访问。
任何想法将不胜感激,我坚持这个!