Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript异步回调函数之间传递参数_Javascript_Asynchronous_Firefox Addon_Mozilla_Gecko - Fatal编程技术网

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

在javascript异步回调函数之间传递参数,javascript,asynchronous,firefox-addon,mozilla,gecko,Javascript,Asynchronous,Firefox Addon,Mozilla,Gecko,我想在这里使用execAsync函数: 我想在handleResult和handleCompletion之间传递值。差不多 statement.executeAsync({ handleResult: function(aResultSet) { VALUE = 1 }, handleCompletion: function(aReason) { print(VALUE); } }); 最好的方法是什么?需要注意的是,您正在将一个对象传递给executeAs

我想在这里使用execAsync函数:

我想在handleResult和handleCompletion之间传递值。差不多

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

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

最好的方法是什么?

需要注意的是,您正在将一个对象传递给executeAsync。(特别是,它是一个mozIStorageStatementCallback,因此它也应该有一个handleError方法。)因此,您可以使用“this”关键字轻松地将特定于该对象的属性与该对象关联:

var value;

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

是的,我试过了,它不起作用。。。所以函数在短时间内执行多次,我希望它只运行一次代码,我通过设置一个全局标志来执行,但它不工作,我有这样的代码:
var value=0;executeAsync({handleResult:function(aResultSet){value=1;},handleCompletion:function(aReason){if(!value)do_something();}})
@Tony您是否尝试过
警报
-ing或
控制台。记录
-ing
以查看它是否以及何时发生变化?deceze的方法是实现您要求的最明显和最惯用的方法。您应该安装firebug并设置一些断点,以了解实际情况。我不认为deceze提供的模式会导致任何错误。nvm,我发现了问题。显然,旧版本的函数正在同时运行。。。它以某种方式改变了变量值。
statement.executeAsync({
  value: 1,
  handleResult: function(aResultSet) {
    this.value = 0;
  },
  handleError: function(aError) {
    this.value = 2;
  },
  handleCompletion: function(aReason) {
    print(this.value);
  }
});