Barbara: Funktionsablauf

Hallo

ich habe diese Funktion:

function erstelleEinheitenTabelle () {

var theTable = loadTableData('einheiten');
alert(theTable);
}

das ruft ja eine andere Funktion auf:
function loadTableData (bezeichnung) {
//die bezeichnung sagt, welche Daten geladen werden sollen
var url_string = 'load_' + bezeichnung + '.php';
var aParams = bezeichnung;
new Request.JSON({
onSuccess: this.callback_createTable.bind(this),
url: url_string,
method: "get"
}).send(aParams);
}

meine Callback-Funktion erstellt die Tabelle:
function callback_createTable (theJsonObj, theJsonText){
if (theJsonObj !== null) {
var bez = theJsonObj.bezeichnung;
         var aTable = new Element("table", {
id: bez + 'Table',
'class': 'zebra',
cellPadding: '2px',
cellSpacing: '2px'
  });
var aTHead = aTable.createTHead();
var aHeaderRow = aTHead.insertRow();

for (var i = 0, lengthJson = theJsonObj.header.length; i < lengthJson; ++i) {  
	var aHeaderCell=aHeaderRow.insertCell(0);  

aHeaderCell.innerHTML=theJsonObj.header[i];
}

var aTBody = aTable.appendChild(document.createElement('tbody'));  
for (var j = 0; j < theJsonObj.rows.length; ++j) {  

var aRow = aTBody.insertRow (-1);
           for (var i = 0; i < theJsonObj.header.length; ++i) {
               var cell = aRow.insertCell (-1);
               cell.innerHTML = theJsonObj.rows[j][theJsonObj.header[i]];
           }
        }
    }
    return aTable;
}

Das Problem nun ist, dass die erste Funktion schon beim alert vorbei ist, wenn die callback-Funktion anfängt die Tabelle zu erstellen. Wie sage ich der ersten Funktion, dass sie warten soll bis die Tabelle zurückkommt?

Danke&Gruss

  1. Hallo Barbara,

    ich vermute, dass mit

    new Request.JSON({
    onSuccess: this.callback_createTable.bind(this),
    url: url_string,
    method: "get"
    }).send(aParams);

    ein asynchroner Request gestartet wird. D.h. das Script läuft weiter, während gleichzeitig der Request abgearbeitet wird. Welches Framework verwendest du?

    ...Wie sage ich der ersten Funktion, dass sie warten soll bis die Tabelle zurückkommt?

    gar nicht. Du kannst nachsehen, ob Request.JSON auch synchron läuft, das würde ich aber nicht machen. Besser ist es, wenn du den "alert" bzw. das, was da eigentlich gemacht werden soll, in die Callback-Funktion "callback_createTable" schreibst.

    Gruß, Jürgen