Javascript 无法在数组中添加元素
我正在尝试在我的电脑上添加可用端口,用于Arduino和电脑之间的串行通信。我已经将portsList创建为一个数组变量,并将这些端口推送到该变量中。但最后,我得到的数组长度为0。我正在使用串口节点模块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) => {
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();