2011-07-09 36 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