node.js - NodeJS 读取部分流
问题描述
我有一个 NodeJS 子进程,它在调用时计算一个唯一的 pid(由 redis 使用)
我和控制台记录它(例如console.log('PID: ' + pid)
:)
在我打电话的父母中spawn(command, arg, {stdio: ['pipe', 'pipe', 'pipe'], detached: true})
我尝试过的一些事情:
- 关闭子进程标准输出并将其传递给一个函数(返回一个承诺),然后
return new Promise((resolve, reject) => {
inputStream.on('data', (i) => {
const isPidString = RegExp('/^PID:.+/g').test(i.toString('utf8'))
console.log('isPidString', isPidString)
if (isPidString) {
console.log('found string')
console.log('i', i.toString())
const pidValue = parseInt(i.toString('utf8').split(': ')[1])
console.log('pidVal', pidValue)
inputStream.destroy()
resolve(pidValue)
}
})
setTimeout(() => {
reject()
}, 5000);
});
不知何故,它不起作用。我的问题是:我如何只为我关心的一个特定的 console.log() 收听一个流(那将不间断地运行)。
解决方案
编辑:能够弄清楚这一点代码很大程度上可以工作,这是所需的:
- 克隆子进程标准输出(我们要从中读取数据)
- 读取字符串(使用 utf-8 编码转换为字符串)
- 当输出与正则表达式字符串匹配时,您使用字符串操纵器来提取值、销毁流并解析。
推荐阅读
- node.js - 获取正在进行的传出 Twilio 呼叫的状态
- python - 如何在 Python 中使用 sklearn 对模型进行单一预测?
- reactjs - 如何在函数 React 中将状态从父级传递给子级?
- excel - Excel 或 VBA:从多列和多张工作表进行比较的公式,然后添加数据
- assembly - 汇编中的快速 8 位乘法器
- css - 角材质垫网格列表最外边界
- python - Python 在坐标处找不到 tkinter 项目
- python - 如何合并csv文件的连续行
- sap-cloud-sdk - 获取开票凭证二进制码失败
- angular - ionic 4 列表渲染需要很长时间