Struppi: codeschnipsel

Beitrag lesen

Grüße,

Das verstehe ich nicht, welche Funktion?

das war mein erster versuch, teilweise gelöscht und glaube ich so fehlerhaft (nicht getestet)

function sql(q,d){//q=query, d=database
if(d!=undefined){
this.db=d;

Was soll das this hier? allein schon dieser Ansatz ist grundlegend falsch. this ist nämlich gleich window, d.h. du hast eine globale Variabel, was bei sowas, mit ziemlicher Sicherheit zu Problemen führt.

}else if(d==undefined && this.db==undefined){

Das könntest du dir auch einfacher machen:

}else if(!d && !this.db){

Wobei, this.db vermutlich nicht das ist was du möchtest.

db.transaction(trcallb,trok,trerr);

Ich kenn mich damit nicht aus, aber ich vermute, da sind alles callback Funktionen. Wieso werden die erst danach definiert? Das müßte eigentlich zu einem Fehler führen, kennst du die Fehlerkonsole?

var stok=function(o,r){
rows=r.rows;

Nur hier kannst du auf r zugreifen. Nur hier!!!!

}
//sterr vergessen^^

return this.rows;

Das hat keinen Nutzen.

das Problem ist, dass return ausgeführt wird, bevor stok den rückgabewert in rows reinschreibt.

Das Wissen wir jetzt seit beginn dieses Threads.

nun könnte ich eine funktion als 3ttes argument übergeben -

Das ist die einzige Möglichkeit die du hast, das wäre die schon erwähnte Callback Funktion.

function sql(q,d,f){//q=query, d=database,f=function

....
....

var stok=function(o,r){
f(r.rows);
}

  
Genau, so funktioniert das.  
  

> aber auch da hatte ich seltsame Sachen - ich hab das Gefühl, dass mehrfaches aufrufen der funktion sql() hintereinander dazu führt, dass voriges request einfach überschrieben wird :/  
  
Absolut, weil du mit globalen Variabeln arbeitest und nicht darauf reagierst wenn ein Request noch nicht fertig ist. Das muss in deine Funktion auch noch eingebaut werden.  
  
Struppi.