【问题标题】:Interpreting functions with callback functions用回调函数解释函数
【发布时间】:2019-06-19 14:34:23
【问题描述】:

我遇到了一段代码,我想了解它的实际工作原理,而不仅仅是复制和粘贴它。

大多数基本教程似乎都没有涉及回调函数的语法(或者我只是不理解它们)。我的例子来自passportjs

passport.use(new Strategy(
  function(username, password, cb) {
    db.users.findByUsername(username, function(err, user) {
      if (err) { return cb(err); }
      if (!user) { return cb(null, false); }
      if (user.password != password) { return cb(null, false); }
      return cb(null, user);
    });
  }));

我想知道的是,如果 'cb' 是函数的参数,那么 return cb(null, user) 在这种情况下的实际含义是什么?这是否意味着执行一个带有参数 null 和 user 的回调函数(这对我来说没有意义)。

【问题讨论】:

  • “这是否意味着执行一个带有参数 null 和 user 的回调函数(这对我来说没有意义)。” - 是的。这有什么不妥之处?
  • 如果该函数未在其他地方定义 - 如何执行名为“回调”的函数?更确切地说,一个没有任何相关指令的函数的结果是什么?
  • 需要解释概念,这不是这里的目的。我会建议有一些书或任何参考资料,并阅读对你同样没有意义的东西——在这种情况下是 JavaScript。
  • 在别处定义。当调用该函数时,它作为参数传递给匿名函数。您可以在代码的第 2 行看到这一点。
  • @tichy255 函数是 JavaScript 中的第一类成员,因此它们可以分配给变量,作为其他函数的参数传递,也可以从函数返回。这类似于您可以对数字或其他对象执行的操作。存储在变量中的函数只需在末尾添加() 即可执行。例如,如果您以(param1, param2, param3) 执行它们,您也可以将其他参数传递给函数。在您的情况下,cb 持有对该函数的引用,因此使用 (null, user) 调用它会执行它并传递这些参数。

标签: javascript node.js


【解决方案1】:

我相信这个评论是这个问题的答案,我只是把它作为答案

函数是 JavaScript 中的第一类成员,因此它们可以分配给变量,作为其他函数的参数传递,也可以从函数返回。这类似于您可以对数字或其他对象执行的操作。 存储在变量中的函数只需在末尾添加 () 即可执行。例如,如果将其他参数作为 (param1, param2, param3) 执行,您也可以将其他参数传递给函数。在您的情况下, cb 持有对该函数的引用,因此使用 (null, user) 调用它会执行它并传递这些参数

致谢:VLAZ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2021-11-08
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多