在javascript异步回调函数之间传递参数

时间:2011-02-03 05:06:36

标签: javascript asynchronous firefox-addon mozilla gecko

我想在这里使用execAsync函数: https://developer.mozilla.org/en/Storage#Asynchronously

我想在handleResult和handleCompletion之间传递值。像

这样的东西
statement.executeAsync({
  handleResult: function(aResultSet) {
    VALUE = 1
  },

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

最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

var value;

statement.executeAsync({
  handleResult : function(aResultSet) {
    value = 1;
  },
  handleCompletion : function(aReason) {
    print(value);
  }
});

答案 1 :(得分:0)

显而易见的是,您要将对象传递给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);
  }
});