Передать переменную в обратный вызов - PullRequest
2 голосов
/ 09 сентября 2011

Я создаю приложение с автономной функциональностью и работаю с 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 Ответ

3 голосов
/ 09 сентября 2011

Вы можете попробовать использовать промежуточный обратный вызов, а не переходить непосредственно к 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 = ->) ->
  # ...
...