如何解决NodeJS读取部分流
我有一个NodeJS子进程,该子进程在调用时会计算一个唯一的pid(供redis使用)
我和控制台将其记录下来(例如:console.log('PID: ' + pid)
)
在父母中,我叫spawn(command,arg,{stdio: ['pipe','pipe','pipe'],detached: true})
我尝试过的一些事情:
- 关闭子进程stdout并将其传递给一个函数(该函数返回一个Promise),然后
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()监听流(即不间断运行)。
解决方法
编辑:能够弄清楚这一点 该代码在很大程度上可以正常工作,这是必需的:
- 克隆子进程stdout(我们要从中读取数据)
- 读取字符串(使用utf-8编码转换为字符串)
- 当输出与正则表达式字符串匹配时,您可以使用字符串操纵器来提取值,销毁流并解析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。