機能

2011-07-09 4 views
2

すべてにSQL結果のバインドのJavascript、機能

私はWebOSとenyoでの作業、本当にシニアの瞬間を過ごしています....

は基本的事実は、そのenyoは、しかし、私の質問とは関係ありません。 ..

私は方法があります。

clickPopulate: function(){ 

    // Do some SQL 

}; 

私はDB接続liteの私のSQLを処理するために、データベースクラスを使用していますが、私が使用していますメソッドのインタフェースがある:

​​

とにかく私はいくつかのSQLといくつかのオプションを送信します。その1つはonSuccessコールバックです。

this.$.db.query("SELECT fullName, count(*) FROM user WHERE username=? and password=? GROUP BY username", 
     {values: [inUser,inPass], onSuccess: enyo.bind(this, this.callBackFunction)}); 

は、SQL結果配列の私のクリックハンドラ関数に復帰持って私が本当に行うことができるようにしたいです - clickPopulateを、その呼び出し方法として、私はそれが仕事を得るカント?

アイデア?

答えて

2

元の発信者に非同期コールバックを返すことはできません。

あなたができる最も近いので、基本的に、あなたのようにクロージャを含むことができ、このような何か(私はEnyo APIを知らないので、私はいくつかのpseudo'ishのものを使用します)

function clickPopulate() { 
    db.query('Some SQL here', function(results) { 
     //This is the code that will be run once the query is complete. 
    }); 
} 

です関数内のコールバック。このように、元の呼び出し元の一部であるように見えますが、実際にはそうではありません。あなたが本当にしたい場合


、あなたはおそらく、それが元の関数を呼び出す必要があり、それは、クエリからの結果だかどうかを決定するために使用されるいくつかのパラメータを定義し、それはちょうどそれがちょっと醜くなるだろう可能性があり、混乱する。

+0

ありがとうJani、これは私が必要としたものです - 非同期呼び出しの問題は、enyoがsetUp関数を1回だけ呼び出すことでした。そして、それを残したときです...上記で提案したオプションは、 。 – diagonalbatman