gpt4 book ai didi

javascript - 如何让双工流等到完成事件才开始发送数据?

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:40 25 4
gpt4 key购买 nike

我一直在尝试创建一个双工流来接收许多对象,重新组织它们,然后将它们通过管道传输到从我的流中读取的任何流。痛点是读取部分只能在接收到所有对象之后(换句话说,在完成事件之后)才开始。

我怎样才能做到这一点?

我目前的想法是,我有两个不同的流(而不是双工),并且我只需在 API 上明确说明,在可写流告诉您这样做之前,不应使用可读流 - 但这似乎是错误的!

请问,有更好的方法吗?提前致谢。

最佳答案

找到答案了!似乎您可以通过在准备好响应之前不调用 this.push() 来告诉消费者流等待。我所要做的就是设置一个标志,让双工流知道消费者正在等待数据,然后使用源上的 on('end') 事件来检查该标志,如果标志为 true,则调用 this._read。代码如下:

constructor(source, options){
super(options);

this._isReady = false;
source.on('end' () => {
this._isReady = true;
if(this._isOnHold) this._read();
})
}

_read(){
if(!this._isReady) {
this._isOnHold = true;
}

// regular push sub-routine
}

当然,这一切都在 Duplex Stream 子类中。

关于javascript - 如何让双工流等到完成事件才开始发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41766494/

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