nodejs 如何利用readStream.pipe然后将数据传给主进程
时间: 2023-11-27 16:50:03 浏览: 59
在 Node.js 中,可以使用 `child_process` 模块创建子进程,然后在子进程中利用 `process.send()` 方法将数据传回给主进程。
具体实现步骤如下:
1. 在主进程中创建子进程,并通过 `child_process.fork()` 方法启动一个 Node.js 脚本。
```javascript
const { fork } = require('child_process');
const child = fork('child.js');
```
2. 在子进程中,利用 `fs.createReadStream()` 方法创建一个可读流,并通过 `pipe()` 方法将数据传输到 `process.stdout` 中。
```javascript
const fs = require('fs');
const readStream = fs.createReadStream('file.txt');
readStream.pipe(process.stdout);
```
3. 在子进程中,监听 `readStream` 的 `end` 事件,当数据传输完成后,通过 `process.send()` 方法将数据传回给主进程。
```javascript
readStream.on('end', () => {
process.send({ data: '数据传输完成' });
});
```
4. 在主进程中,监听子进程的 `message` 事件,当子进程通过 `process.send()` 方法发送数据时,就可以在主进程中接收到。
```javascript
child.on('message', (message) => {
console.log(message); // { data: '数据传输完成' }
});
```
完整代码示例:
主进程代码(`index.js`):
```javascript
const { fork } = require('child_process');
const child = fork('child.js');
child.on('message', (message) => {
console.log(message); // { data: '数据传输完成' }
});
```
子进程代码(`child.js`):
```javascript
const fs = require('fs');
const readStream = fs.createReadStream('file.txt');
readStream.pipe(process.stdout);
readStream.on('end', () => {
process.send({ data: '数据传输完成' });
});
```
阅读全文