Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在数组中添加元素_Javascript_Node.js_Arduino_Serial Port_Node Serialport - Fatal编程技术网

Javascript 无法在数组中添加元素

Javascript 无法在数组中添加元素,javascript,node.js,arduino,serial-port,node-serialport,Javascript,Node.js,Arduino,Serial Port,Node Serialport,我正在尝试在我的电脑上添加可用端口,用于Arduino和电脑之间的串行通信。我已经将portsList创建为一个数组变量,并将这些端口推送到该变量中。但最后,我得到的数组长度为0。我正在使用串口节点模块 const SerialPort = require("serialport"); var portsList = []; SerialPort.list().then((ports) => { ports.forEach((port) => {

我正在尝试在我的电脑上添加可用端口,用于Arduino和电脑之间的串行通信。我已经将portsList创建为一个数组变量,并将这些端口推送到该变量中。但最后,我得到的数组长度为0。我正在使用串口节点模块

const SerialPort = require("serialport");

var portsList = [];
SerialPort.list().then((ports) => {
  ports.forEach((port) => {

    var portInfo = {
      portPath: port.path,
      portManufacturer: port.manufacturer,
    };

    portsList.push(portInfo);
    console.log("Port: ", portInfo);
  });
});

console.log(portsList.length);

代码的输出是:

请尝试以下操作:

    portsList.push({
      portPath: port.path,
      portManufacturer: port.manufacturer,
    });
    console.log("Port: ", portInfo);
SerialPort.list()似乎是异步的。将控制台置于“forEach”之后

或者等待列表

const SerialPort = require("serialport");
     
const getPortsList = async () => {
  var portsList = [];
  const ports = await SerialPort.list();

  ports.forEach((port) => {

    var portInfo = {
      portPath: port.path,
      portManufacturer: port.manufacturer,
    };

    portsList.push(portInfo);
    console.log("Port: ", portInfo);
  });

  console.log(portsList.length);
}

getPortsList();

SerialPort.list()
是异步的。您的
console.log
在它之前执行,因此数组仍然是空的。那么,如果serialPort.list()是异步函数,如何在数组中添加元素呢。
const SerialPort = require("serialport");
     
const getPortsList = async () => {
  var portsList = [];
  const ports = await SerialPort.list();

  ports.forEach((port) => {

    var portInfo = {
      portPath: port.path,
      portManufacturer: port.manufacturer,
    };

    portsList.push(portInfo);
    console.log("Port: ", portInfo);
  });

  console.log(portsList.length);
}

getPortsList();