Передача параметров между функциями асинхронного обратного вызова javascript - PullRequest
1 голос
/ 03 февраля 2011

Я хочу использовать здесь функцию execAsync: https://developer.mozilla.org/en/Storage#Asynchronously

и хочу передать значения между handleResult и handleCompletion.Что-то вроде

statement.executeAsync({
  handleResult: function(aResultSet) {
    VALUE = 1
  },

  handleCompletion: function(aReason) {
    print(VALUE);
  }
});

Какой лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 03 февраля 2011
var value;

statement.executeAsync({
  handleResult : function(aResultSet) {
    value = 1;
  },
  handleCompletion : function(aReason) {
    print(value);
  }
});
0 голосов
/ 05 февраля 2011

Ну, очевидно, что вы передаете объект в executeAsync.(В частности, это mozIStorageStatementCallback, поэтому он также должен иметь метод handleError.) Таким образом, вы можете легко связать свойства, специфичные для этого объекта, с объектом, используя ключевое слово this:

statement.executeAsync({
  value: 1,
  handleResult: function(aResultSet) {
    this.value = 0;
  },
  handleError: function(aError) {
    this.value = 2;
  },
  handleCompletion: function(aReason) {
    print(this.value);
  }
});
...