最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

NodeJS:奇怪的嵌套回调函数

IT培训 admin 9浏览 0评论

Node / JS:奇怪的嵌套回调函数

我遇到了这个回调函数callbackPrinter,以及它在我正在研究的Node.js项目中的用法。不确定它在做什么,特别是参考cb.apply(cb, arguments)

我很难缠绕整个callbackPrinter正在做的事情。可以简化吗?除了记录消息之外,它还在做什么?

用法:

function someFunction(callback) {
  ...
  async.parallel([
    // Some stuff
  ], callbackPrinter(message, callback))
  ...
}

功能:

function callbackPrinter (message, cb) {
  return function (err) {
    if (err) { return cb.apply(cb, arguments) }

    // Some code to log message

    cb.apply(cb, arguments)
  }
}
回答如下:

arguments是一个阵列,cbthis

apply()方法调用具有给定this值的函数,并将arguments作为数组(或类数组对象)提供。

re:https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

所以它在那里两次,第一个有条件地返回回调,第二个做东西然后回调得到apply,在那里调用它。

注意arguments对象是一个类似于Array的对象,对应于传递给函数的参数。从这里:https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Functions/arguments SO因为.apply()接受那个有效的阵列对象。

Node / JS:奇怪的嵌套回调函数

我遇到了这个回调函数callbackPrinter,以及它在我正在研究的Node.js项目中的用法。不确定它在做什么,特别是参考cb.apply(cb, arguments)

我很难缠绕整个callbackPrinter正在做的事情。可以简化吗?除了记录消息之外,它还在做什么?

用法:

function someFunction(callback) {
  ...
  async.parallel([
    // Some stuff
  ], callbackPrinter(message, callback))
  ...
}

功能:

function callbackPrinter (message, cb) {
  return function (err) {
    if (err) { return cb.apply(cb, arguments) }

    // Some code to log message

    cb.apply(cb, arguments)
  }
}
回答如下:

arguments是一个阵列,cbthis

apply()方法调用具有给定this值的函数,并将arguments作为数组(或类数组对象)提供。

re:https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

所以它在那里两次,第一个有条件地返回回调,第二个做东西然后回调得到apply,在那里调用它。

注意arguments对象是一个类似于Array的对象,对应于传递给函数的参数。从这里:https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Functions/arguments SO因为.apply()接受那个有效的阵列对象。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论