gpt4 book ai didi

node.js - 如何确保我们在子进程的事件发生之前监听它们?

转载 作者:太空宇宙 更新时间:2023-11-03 23:05:39 25 4
gpt4 key购买 nike

这里是一些 Node.js 代码,它生成一个 linux ls 命令并提示其结果

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-l']);

let content = "";
ls.stdout.on('data', function(chunk){
content += chunk.toString();
});

ls.stdout.on('end', function(){
console.log(content);
});

这个效果很好。但是,ls 命令是异步启动的,与 NodeJs 主线程完全分离。我担心的是,进程的 stdout 上的 dataend 事件可能发生在我附加事件监听器之前 .

有没有办法在启动该子流程之前附加事件监听器?

注意:我认为我无法在 spawn 函数周围包装 Promise 来实现此功能,因为它将依赖于正确捕获事件来触发成功/失败(回到问题)

最佳答案

这里没有问题。

可读流(自 Node v0.10 起)有一个(有限的)内部缓冲区,用于存储数据,直到您从流中读取数据为止。如果内部缓冲区已满,反压机制将启动,导致流停止从其源读取数据。

一旦调用 .read() 或添加 data 事件处理程序,内部缓冲区将开始耗尽,然后再次开始从其源读取。

关于node.js - 如何确保我们在子进程的事件发生之前监听它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com