关于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 相关文章推荐
Jquery截取中文字符串的实现代码
Dec 22 Javascript
jquery中实现标签切换效果的代码
Mar 01 Javascript
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
Jan 15 Javascript
js数组操作学习总结
Nov 04 Javascript
页面图片浮动左右滑动效果的简单实现案例
Feb 10 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
微信小程序 require机制详解及实例代码
Dec 14 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
Feb 21 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
Vue vm.$attrs使用场景详解
Mar 08 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
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
Python实现的RSS阅读器实例
2015/07/25 Python
Python协程的用法和例子详解
2017/09/09 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
python实现定时提取实时日志程序
2018/06/22 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
python正则表达式实例代码
2020/03/03 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
焦点访谈观后感
2015/06/11 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python
Python使用永中文档转换服务
2022/05/06 Python