محاولة الحصول على singleton للاحتفاظ بالبيانات من الملف ، ولكن يتم تنفيذ تعليمات Javascript البرمجية قبل فتح XMLHttpRequest

إذن هذا هو الشيء:

أنا أولا إنشاء هذا:

var test = objectsFromDB.getInstance();
console.log("Instance hook created.");

الذي يفعل ذلك:

    var objectsFromDB = (function() {
            var instance;

            var createData = function() {
                var characters = CreateObjectsFromDB('CharactersDB.xml', 'character');
                console.log("Data created.");
           (...)
    }

و "CreateObjectsFromDB" يفعل شيئا من هذا القبيل:

xmlDocument.onreadystatechange = function() {
        console.log("State " + this.readyState + " Status " + this.status);    
        if (this.readyState === 4 && this.status === 200) {
            console.log("Opened db.");
            var xmlDoc = xmlDocument.responseXML;
            var myObj = xmlDoc.getElementsByTagName(tagName);
            allObjects = charFactory.createObject(myObj);
            console.log("Returning: " + allObjects[0].name);
            return allObjects;
        }
    };
    xmlDocument.open("GET", DBname, true);
    xmlDocument.send();

ثم أحصل على هذا في وحدة التحكم الخاصة بي:

State 1 Status 0
Data created.
Instance hook created.
State 2 Status 200
State 3 Status 200
State 4 Status 200
Opened db.
Returning: John BonJovi

So it seems, that the "var characters" which should get data, which is returned "if (this.readyState === 4 && this.status === 200)", actually doesn't get it, since the document actually opens AFTER the var is created How can I fix that?

ما أحاول القيام به هنا ، هو الحصول على مفرد ، يحتوي على متغير يحتوي على بيانات من ملف .XML. هل هناك طريقة أبسط للقيام بذلك؟

0