在回调中传递参数

时间:2011-11-11 16:06:41

标签: javascript

我希望能够在回调中传递参数,但是从原始调用函数传递参数,并且使用下面的规定,例如给出:

function foo() {
  var p = 5;
  getDataFromServer(callBackFunction);
}

function callBackFunction(data) {
  // I need value of 'p' here
  ...
}

function getDataFromServer(callback) {
  // gets data from server
  callback.call();
}

问题在于我不想更改函数getDataFromServer(), (即允许它接受另一个参数。)

这可能吗?感谢。

4 个答案:

答案 0 :(得分:2)

是的,您可以使用闭包来执行此操作。

但是,很难为此提供代码,因为您的示例不明确。

我的猜测是你想要这样的东西:

function foo() {
  var p = 5;
  getDataFromServer(callBackFunction(p));
}

function callBackFunction(p) {
  var closureOverP = function(data) {... something with p ...};
  return closureOverP;
}

答案 1 :(得分:2)

是的,这很有用。

function foo() {
  var p = 5;
  getDataFromServer(function(){
     callBackFunction(p)
  });
}

答案 2 :(得分:1)

所以简单的anon函数不会这样做吗?

function foo() 
{ 
   var p = 5;

   getDataFromServer( function() 
                      {
                          callBackFunction( p ); 
                      } );
}

答案 3 :(得分:0)

这绝对是可能的,我会说功能编程语言的良好实践。但是你可以这样调用函数:

function getDataFromServer(callback) {
  // gets data from server
  callback();
}