【问题标题】:Pass variable to callback将变量传递给回调
【发布时间】:2011-11-13 12:23:15
【问题描述】:

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

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

【问题讨论】:

  • -> 是 CoffeeScript 中的 function() { } 吗?
  • 是的,它解释为findAll: function (tableName, callback) { return this.db.transaction(function (tx) {etc etc etc...
  • @mu 谢谢,我一直想试一试。

标签: javascript html coffeescript offlineapps


【解决方案1】:

您可以尝试使用中间回调而不是直接转到querySuccess,使用=>@db 保留上下文:

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

这将允许它在传递给findAllcallback上转发:

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 = ->) ->
  # ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多