Javascript 节点js创建服务器并连接

Javascript 节点js创建服务器并连接,javascript,node.js,Javascript,Node.js,请看以下代码: var server = net.createServer(function(socket) { //Code block A socket.on('connect', function() { //Code block B }) socket.on('data' , function (data){ //Code C }); }); 是否有可能执行代码块a而不执行代码块B,反之亦

请看以下代码:

var server = net.createServer(function(socket) {
    //Code block A


    socket.on('connect', function() {
        //Code block B
    })

    socket.on('data' , function (data){
           //Code C     

    });

});
是否有可能执行代码块a而不执行代码块B,反之亦然? 如果是,在什么情况下


例如:一旦代码A被执行,代码C可以多次运行,而代码A不会再次运行。

如果执行了块B中的代码,则块A中的代码必须已经执行。

如果执行了块B中的代码,那么块A中的代码一定已经执行了。

这闻起来有点像面试类型的问题,但是

1) A或B都不会运行,因为没有
服务器。请侦听
使其开始侦听


2) 如果调用
.listen
,则A将运行(如果.listen成功),但B将在客户端连接到服务器之前不会运行。在连接中,a将运行,然后B(假设连接成功)。

这听起来有点像面试类型的问题,但

1) A或B都不会运行,因为没有
服务器。请侦听
使其开始侦听


2) 如果调用
.listen
,则A将运行(如果.listen成功),但B将在客户端连接到服务器之前不会运行。在一个连接上,a将运行,然后B(假设连接成功)。

好吧,如果您调用
。listen()
,我想您会发现您得到以下顺序:

(Client connects) // "connect" event fires
   |
   v 
  [A]--*-----.  // This is the Socket's "connect" event firing.
       |     |  // B and C are bound to their respective events.
       |     |
       |     |
      [B] <--.  // Binds handler to "connection" event, but 
       |        // connection event fires instantly
       |
      [C] <--.  // "data" event is fired
             |
(Client sends data)
(客户端连接)/“连接”事件激发
|
v
[A] ---*.//这是套接字的“连接”事件触发。
||//B和C绑定到各自的事件。
|     |
|     |

[B] 好吧,如果你调用
.listen()
,我想你会发现你得到一个订单:

(Client connects) // "connect" event fires
   |
   v 
  [A]--*-----.  // This is the Socket's "connect" event firing.
       |     |  // B and C are bound to their respective events.
       |     |
       |     |
      [B] <--.  // Binds handler to "connection" event, but 
       |        // connection event fires instantly
       |
      [C] <--.  // "data" event is fired
             |
(Client sends data)
(客户端连接)/“连接”事件激发
|
v
[A] ---*.//这是套接字的“连接”事件触发。
||//B和C绑定到各自的事件。
|     |
|     |

[B] 不是面试,只是好奇。你错了。当你开始听的时候,代码A不会被执行。不是面试,只是好奇。你错了。当你开始听的时候,代码A不会被执行。代码c可以在代码A执行一次后多次运行。代码c可以在代码A执行一次后多次运行。我不理解你的计划。据我所知,每次代码A运行时,代码B都会运行。真的吗?事实上,传入的函数已注册为服务器“connect”事件的处理程序。请参阅我编辑的文章,以了解更清晰的内容,在我写这篇文章时重新整理图表。我不理解您的方案。据我所知,每次代码A运行时,代码B都会运行。真的吗?事实上,传入的函数已注册为服务器“connect”事件的处理程序。请参阅我编辑的文章,了解更多信息,在我写这篇文章时重新整理图表。