传递参数

问题描述:

我想使用的功能execAsync这里: https://developer.mozilla.org/en/Storage#Asynchronously传递参数

,我想handleResult和handleCompletion之间传递值。类似于

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

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

什么是最好的办法呢?

var value; 

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

遐我试过了,它不工作... 所以该函数在短时间内被执行多次,我希望它只运行一次代码,我通过设置全局标志来做到这一点,但它不工作 – 2011-02-03 05:16:46

那么显而易见的是要传递一个对象到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); 
    } 
});