gpt4 book ai didi

javascript - 将可读流传输至 2 个可写流

转载 作者:行者123 更新时间:2023-12-03 02:49:42 25 4
gpt4 key购买 nike

对于一个简单的问题,我找不到简洁的答案。希望就是这样。

我只是想这样做:

let myReadableStream = ...some readable stream...;
let myFileStream = ...some writable file stream...;

myReadableStream.pipe(process.stdout).pipe(myFileStream);

这不起作用,因为可写流无法通过管道传输。

此类作品:

let myReadableStream = ...some readable stream...;
let myFileStream = ...some writable file stream...;

myReadableStream.pipe(process.stdout);
myReadableStream.pipe(myFileStream);

但是,如果在到达第二个 myReadableStream.pipe(myFileStream) 之前可读管道很快就充满了数据,这不会导致问题吗?

使用管道执行此操作的规范方法是什么?

最佳答案

据我了解node.js流,它们不会在调用pipe()函数时立即开始流动,工作会推迟到您将控制权返回到event loop 。所以不会,两次 pipe() 调用之间不会发生任何事情。

我知道这对于来自基于多个应用程序线程的环境的人(例如我)来说似乎违反直觉。但多线程不是 JavaScript 并发模型。相反,异步 JavaScript 执行基于更易于管理的 EventLoop 模型,其中异步回调处理仅发生,其他应用程序代码处于空闲状态。这样做的一大优点是不需要锁,而锁有时很难在线程执行模型中正确实现。

关于javascript - 将可读流传输至 2 个可写流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47934099/

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