2

我正在构建一个具有离线功能的应用程序并正在使用 WebSQL(我知道它已被弃用,但它是 PhoneGap 附带的)

我想创建一个解析结果的 SQL 查找函数,然后调用我传递给该函数的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

如何在querySuccess函数中指定函数的回调findAll

4

1 回答 1

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 = ->) ->
  # ...
于 2011-09-09T05:21:05.837 回答