嵌套函数内部的回调

时间:2014-06-18 07:26:15

标签: javascript callback

我正在尝试理解this code

我已经使用下面的代码对其进行了简化,并尝试了解如何将此函数与回调一起使用。

function test(text, callback) {
  function test2() {
    callback(text);
  }
}

并用

调用它
test('sometext', function(response) { 
  console.log(response);
});

然而,test2永远不会被调用。

如何使用此回调调用test2?

3 个答案:

答案 0 :(得分:2)

您需要致电text2。你现在所做的就是定义它。有多种方法可以做到这一点。最简单的是调用函数:

function test(text, callback) {
  (function test2() {
    callback(text);
  })();
}

请注意定义末尾的();及其周围的括号。这将在test2运行时调用test

另一种做同样事情的方法是在定义之后调用它:

function test(text, callback) {
  function test2() {
    callback(text);
  }
  test2();
}

或者,您可以将test用作test2的工厂并将其退回并在以后调用它:

function test(text, callback) {
  return function test2() {
    callback(text);
  }
}

var f = test('logged', console.log);

f();

在链接到它的示例中,我不清楚如何调用回调,因为它看起来不像getTokenAndXhr。也许在Chrome浏览器中有一些神奇的东西可以通过somekind的反射来调用它。

答案 1 :(得分:1)

你永远不会调用test2,只是声明它。明确地执行它:

function test(text, callback) {
    function test2() {
      callback(text);
    }
    test2();
}

或者从功能上来说没有理由声明像这样的作用域函数,只需触发回调:

function test(text, callback) {
    callback(text);
}

答案 2 :(得分:0)

您必须实际拨打test2

您可以直接在test内拨打电话。您可以返回test2,然后稍后调用该返回值。等