嵌套函数内的回调

Callback inside nested function

本文关键字:回调 函数 嵌套      更新时间:2023-09-26

我想理解这段代码

我用下面的代码简化了它,并试图理解如何使用回调函数。

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

命名
test('sometext', function(response) { 
  console.log(response);
});

但是test2从来没有被调用过。

我如何用这个回调调用test2 ?

您需要呼叫text2。你现在要做的就是定义它。有很多方法可以做到这一点。最简单的方法是在函数所在的位置调用该函数:

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

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

另一种方法是在定义它之后调用它:

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浏览器中发生了一些神奇的事情,通过某种反射来调用它。

永远不调用test2,只声明它。显式执行:

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

或者因为从功能上讲没有理由像这样声明一个作用域函数,所以只需触发回调:

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

您必须实际调用test2

可以在test中直接调用它。您可以返回test2,然后稍后调用该返回值。等。