Callback und SQLite

Fruitgum

Erfahrenes Mitglied
Hallo

ich versuche schon seit Stunden ein Callback. Also ich versuche das SQL Objekt in ein Variable zupacken, nicht Global aber eine Funktion soll mir nur das Objekt übergeben.


meine executeSQL

Code:
function executeQuery($query,callback){
     try{
         if(window.openDatabase){
         db.transaction(
         function(tx){
         tx.executeSql($query,[],function(tx,result){
         if(typeof(callback) == "function"){
                 callback(result);
         }else{
                 if(callback != undefined){
                       eval(callback+"(result)");
                  }
         }
         },function(tx,error){});
          });
          // return result;
         }
         }catch(e){
          console.log(e);
         }


der Callback funktioniert wenn ich es so aufrufe:

Code:
sql = 'SELECT * FROM '+dbPrefix+'news';

   executeQuery(sql,function(results){

               alert(results);        

});

natürlich gibt mir alert aus das es ein SQLObject besitzt.

Ich will das Objekt aber zb gerne so haben :

Code:
sql = 'SELECT * FROM '+dbPrefix+'news';
var mySQLObject = executeQuery(sql);


console.log(mySQLObject);

Ich habe rumprobiert aber irgendwie schnall ich das callback net richtig

Kann wer Helfen :)


LG, Marc
 
Das ist bei asynchronem Code nunmal so. Du musst in der callback Funktion weiter arbeiten.

Javascript:
sql = 'SELECT * FROM '+dbPrefix+'news';
 
executeQuery(sql,function(mySQLObject){
    console.log(mySQLObject);
    
    //Hier muss die weiter Logik stehen
});

//Hier kann niemals was mit den SQL Daten gemacht werden


Edit: Eventuell funktioniert das auch synchron, was aber nicht zu empfehlen ist. Auf welcher Plattform soll das laufen?
 
Zuletzt bearbeitet:
na doch

ich kann sie Innerhalb der Logik global setzen und darauf zugreifen.

wenn ich zb. mit $.ajax arbeite und async auf false setze habe ich die daten ja auch als Array, json usw. Also ich jetzt hier nicht der JS-Greek, ich finde das ich jetzt da drin bleiben muss irgendwie misst.
 
ja mache es jetzt innerhalb... glaube einen guten weg gefunden zu haben.

du musst mir aber auch sagen warum das nicht gut ist!
 
du musst mir aber auch sagen warum das nicht gut ist!

Gerne.

Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.
Quelle: http://api.jquery.com/jQuery.ajax/


Das heißt so viel wie: Wenn der AJAX request eine Sekunde braucht, läuft innerhalb dieser Sekunde kein anderes JavaScript. keine Events (click, load), Keine Animationen, keine weitere AJAX requests.

In anderen Sprachen, wie z.B. Java, sind synchrone Anfragen die Regel, aber dort hat man auch Threads. Anstatt mit Threads programmiert mit in JavaScript eben mit Asynchronen Events.
 

Neue Beiträge

Zurück