javascript - 如何在 node.js 脚本中执行命令行参数
问题描述
我对编程很陌生,我正在努力努力——可能这个问题真的不值得问,但我没有取得任何进展,因为……太久了。
我正在尝试在 node.js 脚本中对连接到本地网络的所有设备进行发现搜索。
我发现这个 npm 模块应该可以完成这项工作:https ://www.npmjs.com/package/local-devices/v/3.0.0
因此,我只是尝试复制粘贴他们给出的示例,以在我的网络中搜索所有设备:
const find = require('local-devices');
// Find all local network devices.
find().then(devices => {
devices /*
[
{ name: '?', ip: '192.168.0.10', mac: '...' },
{ name: '...', ip: '192.168.0.17', mac: '...' },
{ name: '...', ip: '192.168.0.21', mac: '...' },
{ name: '...', ip: '192.168.0.22', mac: '...' }
]
*/
})
但是如果我现在运行脚本,什么都不会发生。
到目前为止我尝试过的: 1. 我尝试将输出保存在一个常量中,并尝试在控制台上输出它
const found = find().then(devices => {
devices
/*[
{ name: '?', ip: '192.168.0.10', mac: '...' },
{ name: '...', ip: '192.168.0.17', mac: '...' },
{ name: '...', ip: '192.168.0.21', mac: '...' },
{ name: '...', ip: '192.168.0.22', mac: '...' }
]
return devices
})
console.log(found);
那么控制台输出是Promise { <pending> }
. 我不知道该怎么办。
- 有这个命令行参数
arp -a
,如果在命令行中执行,它会在终端中列出网络中所有设备的所有 IP 地址。所以它基本上完全符合我的要求,但我需要在下面的代码中使用该输出(我需要从这个列表中找到一个智能插头的特定 IP 地址,但这是另一回事)。
如何获取此命令行参数,并在我的 javascript 代码/我的 node.js 脚本中执行它,并将输出保存在变量/const 中?
最好的问候,迈克尔
解决方案
当一个函数返回 aPromise
时,它意味着它正在异步运行(网上有各种关于此的教程)。长话短说,该find()
函数将立即返回一个Promise
对象,然后它会去查找 IP 地址,一旦找到它就会填充Promise
(即fulfill
它)。
该then()
部分是在 Promise 完成后执行的回调。所以你可以做的是:
const find = require('local-devices');
async function findIP() {
// Find all local network devices.
const found = find().then(devices => {
console.log(devices);
})
await found;
}
findIP();
本质上await
是告诉 JS 等到found
Promise 对象完成 - 现在 JS 只是在找到 IP 地址之前退出。
推荐阅读
- c - 字数统计中的单杠
- bash - 如何打破在bash中读取文件的while循环
- reactjs - 无法读取未定义的属性“forEach”(反应)
- python - 十六进制转二进制,结果反转?
- java - 有没有办法将多个 JScrollPanes 插入到 JLayeredPane 中?
- php - 自定义摘录代码不适用于 WordPress
- docker - /tmp 中的 Docker 绑定挂载目录不起作用
- c# - “代码重构”和“带有代码修复的分析器”模板有什么区别
- java - 滚动时 RecyclerView 自定义动画
- python - 使用预签名 URL PUT 方法上传文件不起作用 Python 请求