oput前端数据零存整取工具库

联合创作 · 2023-09-29 14:02

oput 是一个用于前端读取预定长度数据的工具库,相当于零存整取(0 put do)

  • 零存代表,异步获取到的数据是零碎的,且长度不确定(例如tcp流的数据)
  • 整取代表,需要读取的数据的长度是确定的。

比如有一个场景,每次采集到的数据是128个字节,但是我需要凑满480个字节使用,那么就需要做缓存,生产和消费,更新缓存。

oput将这种行为封装起来,减少重复编写类似的代码。

具体使用方式:

生产者:

通过write方法填充数据,接收TypedArray和ArrayBuffer类型的数据

import OPut from 'oput'
const oput = new OPut(reader)
oput.write(new Uint32Array([1,2,3]))

消费者:

方式1、按字节读取:

function *reader(){
  let b = yield 5;//读取5个字节
  console.log(b[0])
}

方式2、用TypedArray作为容器读取

function *reader(){
  let b = new Uint8Array(5);
  yield b;//填充到b中
  console.log(b[0])
  b = new Uint32Array(5);
  yield b;//填充到b中,又读取了20个字节
  console.log(b[0])
}

方式3、read方法异步读取

  const oput = new OPut();
  oput.write(new Uint32Array([1, 2]));
  oput.write(new Uint32Array([1, 2]));
  oput.read(1).then(value=>{
    expect(value[0]).toBe(1)
    return oput.read(4)
  }).then(value=>{
    expect(value[3]).toBe(2)
  })

 

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报