function selectQuery(db, sqlQuery){ // Funktion 1
/* In die Variable 'result' soll das Ergebnis aus der transaction gespeichert werden. */
var result;
db.transaction(
function (transaction) { // Funktion 2
transaction.executeSql(sqlQuery, [], resultFunction, errorHandler);
}
);
}
function resultFunction(transaction, results){ // Funktion 3
/* result soll zurück gegeben werden */
return results;
}
ich möchte gerne das Result, welches die SQL-Anweisung in der darauf folgenden Funktion erzeugt, zurück geben. Hat jemand eine Idee, wie ich das machen kann?
Das geht so nicht - du denkst hier imperativ, aber die Schnittstelle arbeitet asynchron und Callback-basiert.
Da gibt es so etwas wie »Rückgabe« nicht, Funktion 1, 2 und 3 (ich habe sie oben nummeriert) können einander nichts zurückgeben. Die Funktionen können nicht aufeinander warten, sie werden nicht in einer Aufruf-Abfolge ausgeführt. Wenn Funktion 2 ausgeführt wird, dann ist Funktion 1 längst abgelaufen. Wenn Funktion 3 ausgeführt wird, dann ist Funktion 2 längst abgelaufen. Es ist unmöglich und würde keinen Sinn mehr machen, in Funktion 3 eine lokale Variable in Funktion 3 zu setzen.
Was hast du genau vor? Warum willst du das Resultat in Funktion 1 haben? Wie gesagt geht das ganz grundsätzlich nicht - weil der Zugriff auf das Query-Resultat erst in der Callback-Funktion möglich ist, die asynchron und damit unabhängig von Funktion 1 gestartet wird.
Mathias