关于Stream和Buffer的相互转换详解


Posted in Javascript onJuly 26, 2017

前言

最近在工作的时候突然就有了这样一个需求,这一次正好也对本来不太熟的 Stream 有了一点更加深刻的理解……(好吧本来是根本没搞清楚状况)。本文将给大家详细介绍关于Stream和Buffer相互转换的相关资料,下面话不多说,来一起看看详细的介绍吧。

方法如下:

Stream,中文叫做流,和我们平时充值信仰的那个 Steam 还是差了那么一点的。所谓流,是一种消费的模型,被消费完就木有了,所以如果我们需要重复使用,就得存下来,也就是把 Stream 转成别的东西——Just Like Array or Buffer。

上代码表演一下:

function streamToBuffer(stream) { 
 return new Promise((resolve, reject) => {
 let buffers = [];
 stream.on('error', reject);
 stream.on('data', (data) => buffers.push(data))
 stream.on('end', () => resolve(Buffer.concat(buffers))
 });
}

Buffer.concat(buffers) 之后就转换为了 Buffer,可以重复使用了。

逆向转换也很简单:

let Duplex = require('stream').Duplex; 
function bufferToStream(buffer) { 
 let stream = new Duplex();
 stream.push(buffer);
 stream.push(null);
 return stream;
}

参考:

http://derpturkey.com/buffer-to-stream-in-node/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
JavaScript中神奇的call()方法
Mar 12 Javascript
日常收集整理的JavaScript常用函数方法
Dec 10 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
一个简易的js图片轮播效果
Jul 22 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
关于react中组件通信的几种方式详解
Dec 10 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
百度小程序自定义通用toast组件
Jul 17 Javascript
前端框架ECharts dataset对数据可视化的高级管理
Dec 24 Javascript
JS 60秒后重新发送验证码的实例讲解
Jul 26 #Javascript
JS数组操作中的经典算法实例讲解
Jul 26 #Javascript
你有必要知道的10个JavaScript难点
Jul 25 #Javascript
Vue.js学习笔记之常用模板语法详解
Jul 25 #Javascript
jQuery实现键盘回车搜索功能
Jul 25 #jQuery
简单实现js鼠标跟随效果
Aug 02 #Javascript
BootStrap的双日历时间控件使用
Jul 25 #Javascript
You might like
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python模拟登录验证码(代码简单)
2016/02/06 Python
利用python获取Ping结果示例代码
2017/07/06 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
医药专业应届毕业生求职信范文
2014/01/01 职场文书
迟到早退检讨书
2014/02/10 职场文书
党支部活动策划方案
2014/08/18 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
教师见习报告范文
2014/11/03 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
2015年统战工作总结
2015/05/19 职场文书
甲午风云观后感
2015/06/02 职场文书
大学生读书笔记大全
2015/07/01 职场文书
小学班长竞选稿
2015/11/20 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS