Я пытаюсь разработать класс в JavaScript. Я могу легко получить доступ к загрузке данных, собранных по запросу AJAX. Единственная проблема - мне нужно, чтобы члены класса были доступны только после завершения вызова AJAX. В идеале я хотел бы, чтобы в конечном итоге что-то, где с помощью я могу назвать это в скрипте:Выполнение функций до тех пор, пока вызов AJAX не будет завершен с помощью jQuery
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 будет завершен и, очевидно, у него не будет доступа к данным.
Любые идеи будут признательны, я застрял на этом!
называет 'courses.getCourse ('хуг', функция (курс) {...})' недопустимо? Это стандартный способ работы с асинхронными операциями. –