【发布时间】:2018-08-15 16:51:05
【问题描述】:
我有一个可观察的从流中获取数据,每次大小为 512,接下来我必须在其他可观察到的地方将其分解为 200 个字符,并将 [12] 字符保留在其他缓冲区中以与下一个块连接,我通过使用解决它新的主题和 for 循环,我相信可能会有更好、更漂亮的解决方案。
收到 Observable ----------------------------------------
- 下一个 [512] -------> [112] [200] [200] -------> [200] [200]
- 第二个下一个 [512][112] --> [24][200][200] [88+112] --> [200] [200 ]
- 第三下 [512][24] --> [136] [200] [76+124] .....
第n次迭代[512][194] --> [106][200][200][106+94] --> [200][200][200]
n+1th [512][6].......
maxValueSize = 200
this._sreamRecord$.subscribe(
{
next: (val) => {
const bufferToSend: Buffer = Buffer.concat([completationBuffer, val])
for (let i = 0; i < bufferToSend.length; i += maxValueSize) {
if (bufferToSend.length - i > maxValueSize) {
bufferStreamer.next(bufferToSend.slice(i, i + maxValueSize))
} else {
completationBuffer = bufferToSend.slice(i, i + maxValueSize)
}
}
},
complete() {
if (completationBuffer.length) {
bufferStreamer.next(completationBuffer)
}
bufferStreamer.complete()
}
})
【问题讨论】:
-
请分享您的代码以及您目前如何尝试这样做。
-
其他 100 个字节会怎样? 12 + 200 + 200 = 412
-
错过计算余数为112
标签: javascript rxjs observable rxjs6