0

这可能是不可能的,但也许一些 stackoverflow 天才可以找到解决方案:)

W希望有这样的功能:

var myCrazyFunc;
myCrazyFunc = function (param1, callback) {
  var funcId;
  // I would like to get an Id of the function passed by callback 
  // which will be different for those two calls in example below
  funcId = getFuncId(callback);
  callback();
};
myCrazyFunc("param1", function () {
  dosomething1;
});
myCrazyFunc("param1", function () {
  dosomething2;
});

请不要问我为什么需要它:) 如果可能的话,它会简化我的代码。

4

1 回答 1

2

这是我制作的功能:

var myCrazyFunc;

var latestID = 0;
var funcToID = {};

function getFuncId(f) {
  if (f in funcToID) {
    return funcToID[f];
  }

  funcToID[f] = ++latestID;

  return latestID;
}

myCrazyFunc = function(param1, callback) {
  var funcId;
  // I would like to get an Id of the function passed by callback 
  // which will be different for those two calls in example below
  funcId = getFuncId(callback);

  console.log(funcId);

  callback();           
};

myCrazyFunc("param1", function() {
  'a';
});

myCrazyFunc("param1", function() {
  'b';
});

此示例将记录:

1
2

我使用相同的功能代码运行它,您获得相同的 id,如下所示:

myCrazyFunc("param1", function() {
  'a';
});

myCrazyFunc("param1", function() {
  'a';
});

输出:

1
2

我希望没关系。

于 2013-08-22T14:49:58.380 回答