tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von CPoly
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
285
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Fruitgum
    Fruitgum Fruitgum ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    187
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
     
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    
     
    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 :
    1
    2
    3
    4
    5
    6
    
     
    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
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Das ist bei asynchronem Code nunmal so. Du musst in der callback Funktion weiter arbeiten.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    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?
    Geändert von CPoly (04.01.12 um 23:04 Uhr)
     

  3. #3
    Avatar von Fruitgum
    Fruitgum Fruitgum ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    187
    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.
     

  4. #4
    Avatar von Fruitgum
    Fruitgum Fruitgum ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    187
    ich setz da was mit phonegap um, und ist erstmal für adroid
     

  5. #5
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von Fruitgum Beitrag anzeigen
    wenn ich zb. mit $.ajax arbeite und async auf false setze habe ich die daten ja auch als Array, json usw.
    Das solltest du aber niemals tun.

    Für die Datenbank scheint es das auch nicht zu geben.
     

  6. #6
    Avatar von Fruitgum
    Fruitgum Fruitgum ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    187
    ja mache es jetzt innerhalb... glaube einen guten weg gefunden zu haben.

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

  7. #7
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von Fruitgum Beitrag anzeigen
    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.
    Fruitgum bedankt sich. 

Ähnliche Themen

  1. [SQLite] Anfänger frage bzw C# und SQLite
    Von Lensen im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 14.12.11, 12:50
  2. Was ist CALLBACK?
    Von devian_der_999 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 14.12.10, 13:23
  3. Callback
    Von MrDude im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 30.03.05, 15:38
  4. Callback bei Threads
    Von neik im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 20.08.04, 14:30
  5. Was ist Callback?
    Von Tutankhseth im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 07.08.04, 00:54