2011-07-09 35 views
2

所有,的JavaScript绑定SQL结果的函数

我与WebOS的工作enyo,但有一个非常资深的时刻....

基本上,实际上它enyo有没有关系,但是我的问题。 ..

我有一个方法:

clickPopulate: function(){ 

    // Do some SQL 

}; 

我使用一个数据库类来处理我的精简版SQL数据库连接,因为我使用的方法的接口:

​​

因此,无论如何,我发送一些SQL和一些选项,其中之一是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函数,当我离开它时,就是这样了......上面提到的选项是一种享受,谢谢。 – diagonalbatman