2011-09-09 95 views
2

我建設具有離線功能的應用程序,並正與(我知道這是過時了,但它就是自帶的PhoneGap)傳遞變量回調

我想創建一個分析結果的SQL查找功能正與的WebSQL然後調用我傳遞給findAll函數的函數。 這是coffeescript,但我可以翻譯成Javascript,如果這會讓我得到答案!

class window.TimeTravelDB 

    findAll: (tableName, callback) -> 
    @db.transaction (tx) -> 
     tx.executeSql("Select * from #{tableName}", [], @db.querySuccess, @db.onError) 

    querySuccess: (tx, results) -> 
    rows = results.rows 
    results = (JSON.parse(rows.item(i).data) for i in [0...rows.length]) 
    callback(results) 
    return @results 

如何指定在findAll功能querySuccess函數的回調?

+0

''>'是CoffeeScript中的'function(){}'? – alex

+0

是的,它解釋爲'findAll:function(tableName,callback){return this.db.transaction(function(tx){etc etc etc ......' –

+0

@mu謝謝,我一直想給它一個嘗試。 – alex

回答

3

你可以嘗試使用中間的回調,而不是直接去querySuccess,與=>保持上下文@db

(tx, results) => @db.querySuccess(tx, results, callback) 

這將允許它在callback傳遞給findAll轉發:

findAll: (tableName, callback) -> 
    @db.transaction (tx) -> 
    tx.executeSql("Select * from #{tableName}", [], 
     (tx, results) => @db.querySuccess(tx, results, callback), 
     @db.onError 
    ) 

然後調整querySuccess爲參數:

querySuccess: (tx, results, callback = ->) -> 
    # ... 
+0

啊 - 太神奇了,謝謝! –