【问题标题】:Where is the `listen` Function in Node.js DefinedNode.js 中的 `listen` 函数在哪里定义
【发布时间】:2013-08-19 17:38:40
【问题描述】:

我正在探索 Node.js 的内部结构,发现了以下方法定义

//File: node/lib/net.js
Socket.prototype.listen = function() {
  debug('socket.listen');
  var self = this;
  self.on('connection', arguments[0]);
  listen(self, null, null, null);
};

在 Socket 对象的 listen 方法中,有一个对(看似)全局函数的调用,也称为 listen

listen(self, null, null, null);

这个 javascript 方法/函数在哪里定义?我已经搜索了代码库中的所有 javascript 文件,但似乎找不到它。

(除了跟踪节点的执行路径并尝试了解系统深处使用的模式之外,我在这里没有要完成的具体任务。)

【问题讨论】:

  • 幻象功能!我很感兴趣,+1
  • @tymeJV 我今天显然行动缓慢(见下面的答案)

标签: javascript node.js


【解决方案1】:

它在net.js 中进一步定义。从 0.11.5 开始,it's at line 1089:

function listen(self, address, port, addressType, backlog, fd) {
  if (!cluster) cluster = require('cluster');    

  if (cluster.isMaster) {
    self._listen2(address, port, addressType, backlog, fd);
    return;
  }

  // ...
}

【讨论】:

  • Derp,捂脸,这里没什么可看的。
【解决方案2】:

https://github.com/joyent/node/blob/b80d11d46b3b2abff1cf1fe887971ea50fd7d497/lib/net.js#L1088

这只是一个在文件中声明的函数,由于函数提升,这在javascript中是可以的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多