将变量传递给回调

时间:2011-09-09 05:08:36

标签: javascript html5 coffeescript offlineapps

我正在构建一个具有离线功能的应用程序并且正在使用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函数的回调?

1 个答案:

答案 0 :(得分: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 = ->) ->
  # ...