javascript - 嵌套函数内的回调

标签 javascript callback

我正在努力理解 this code

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

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 浏览器中发生了一些魔法,通过某种反射调用它。

关于javascript - 嵌套函数内的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279460/

相关文章:

javascript - 简单的iFrame不显示一些跨域页面

javascript - 如何从 JS 变量获取 Highcharts 实体仪表数据?

javascript - 在 Node.js 中使用 fs.readdir() 列出文件时出现问题

java - CXF中的密码回调

javascript - ng-annotate 控件依赖名称

JavaScript 和 PHP 安全

javascript - 任何 JavaScript 代码都是有效的 TypeScript 代码吗?

c - 使用在其他源文件中初始化的函数指针

ruby-on-rails - Postgres 中的默认值何时在 Rails 回调链中分配?

java - 从继承自同一父类(super class)的多个类实现回调接口(interface)时发生冲突