Javascript 是否将两个客户端数据保存到一个变量?

Javascript 是否将两个客户端数据保存到一个变量?,javascript,node.js,Javascript,Node.js,我有两个客户端将连接到我的服务器。我有以下设置服务器的代码,然后客户端将运行该命令 telnet localhost 3000在其终端上运行。现在这部分工作了 var http = require('http'); var net = require('net') var listOfClients = [] var server = net.createServer(function(socket) { socket.write("Welcome to ROCK PAPER SCISSOR

我有两个客户端将连接到我的服务器。我有以下设置服务器的代码,然后客户端将运行该命令

telnet localhost 3000在其终端上运行。现在这部分工作了

var http = require('http');
var net = require('net')
var listOfClients = []
var server = net.createServer(function(socket) {
  socket.write("Welcome to ROCK PAPER SCISSORS choose from the following \n")
  socket.write("[1] Rock \n")
  socket.write("[2] Paper \n")
  socket.write("[3] Scissors \n")
  listOfClients.push(socket)
  server.getConnections(function(error, count) {
    if (count == 2) {

      let p1 = listOfClients[0].on('data', function(data) {
        return data;

      });

      let p2 = listOfClients[1].on('data', function(data) {
        return data;

      });

      console.log(p1)
      console.log(p2)
    }
  });
});
然后客户选择1或2或3作为石头/布/剪刀我想保存他们在变量中使用的内容,但是方法

let p1 = listOfClients[0].on('data', function(data) {
  return data;
});
不会将数据保存到变量中,并返回许多我不理解的内容。有什么办法吗?列表中有套接字,只需要它们将客户端输入保存到变量中。

NodeJS使用。 根据文件:

大部分Node.js核心API都是围绕一个惯用的异步事件驱动体系结构构建的,在该体系结构中,某些类型的对象(称为“发射器”)会发出命名事件,从而导致调用函数对象(“侦听器”)

在您的代码中,'data'…代码片段上的
ListofClient[0]。实际上正在为事件“data”创建侦听器。
本质上,你是在告诉代码:嘿,你能继续听这些,并在它发生时做些什么吗?
在您的代码中,您告诉它“当客户端[0]发送一些数据时,执行一些操作”

所以当你写作时:

const variableName = something.on('someEvent', function(data) {});
变量
variableName
实际上是接收事件侦听器的结果,并使用回调作为第二个参数。
让我们编写一个包含一个参数作为回调的快速函数:

function myFunction(data, callback) {
    callback("This is where you're trying to return the value");

    return 'this is the event listener return';
}

const myVar = myFunction('Anything you please', function(callbackResult) {
    console.log(`This is the callback: ${callbackResult}`);
});

console.log(`This is the var value: ${myVar}`);
运行上述代码将输出:

node v10.15.2 linux/amd64

This is the callback: This is where you're trying to return the value
This is the var value: this is the event listener return
解决问题的一个方法是将数据分配给事件侦听器外部的变量,如下所示:

const storeHere = [];

function myFunction(data, callback) {
    callback("This is where you're trying to return the value");

  return data;
}

const myVar = myFunction('Anything you please', function(callbackResult) {
    storeHere.push(callbackResult); // Store somewhere outside
});

console.log(`This is the externalVar value: ${storeHere}`);
console.log(`This is the var value: ${myVar}`);
NodeJS使用。 根据文件:

大部分Node.js核心API都是围绕一个惯用的异步事件驱动体系结构构建的,在该体系结构中,某些类型的对象(称为“发射器”)会发出命名事件,从而导致调用函数对象(“侦听器”)

在您的代码中,'data'…
代码片段上的
ListofClient[0]。实际上正在为事件“data”创建侦听器。
本质上,你是在告诉代码:嘿,你能继续听这些,并在它发生时做些什么吗?
在您的代码中,您告诉它“当客户端[0]发送一些数据时,执行一些操作”

所以当你写作时:

const variableName = something.on('someEvent', function(data) {});
变量
variableName
实际上是接收事件侦听器的结果,并使用回调作为第二个参数。
让我们编写一个包含一个参数作为回调的快速函数:

function myFunction(data, callback) {
    callback("This is where you're trying to return the value");

    return 'this is the event listener return';
}

const myVar = myFunction('Anything you please', function(callbackResult) {
    console.log(`This is the callback: ${callbackResult}`);
});

console.log(`This is the var value: ${myVar}`);
运行上述代码将输出:

node v10.15.2 linux/amd64

This is the callback: This is where you're trying to return the value
This is the var value: this is the event listener return
解决问题的一个方法是将数据分配给事件侦听器外部的变量,如下所示:

const storeHere = [];

function myFunction(data, callback) {
    callback("This is where you're trying to return the value");

  return data;
}

const myVar = myFunction('Anything you please', function(callbackResult) {
    storeHere.push(callbackResult); // Store somewhere outside
});

console.log(`This is the externalVar value: ${storeHere}`);
console.log(`This is the var value: ${myVar}`);

你应该了解可读流是如何工作的。你不可能在任何网站或文档中找到该代码。更好地阅读文档并清楚地了解正在发生的事情。@JorgeFuentesGonzález好的,我会开始的。你应该了解可读流是如何工作的。你不可能在任何网站或文档中找到该代码最好阅读文档并清楚地理解发生了什么。@JorgeFuentesGonzález好的,我会继续的