关于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 相关文章推荐
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 Javascript
JQuery日历插件My97DatePicker日期范围限制
Jan 20 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 Javascript
微信小程序 增、删、改、查操作实例详解
Jan 13 Javascript
vue.js element-ui validate中代码不执行问题解决方法
Dec 18 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
Dec 20 Javascript
vue小白入门教程
Apr 02 Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 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二维/三维数组转字符串
2013/09/13 PHP
php中session退出登陆问题
2014/02/27 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
详解JS模块导入导出
2017/12/20 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
python 读取二进制 显示图片案例
2020/04/24 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
Internal修饰符有什么含义
2013/07/10 面试题
在校大学生的职业生涯规划书
2014/03/14 职场文书
法人代表证明书
2014/09/18 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
求职简历自我评价2015
2015/03/10 职场文书
2015大一新生军训感言
2015/08/01 职场文书
热爱劳动主题班会
2015/08/14 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS