molily: zu deiner zweiten Frage im Doppelposting

Beitrag lesen

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