关于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 相关文章推荐
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 Javascript
javascript页面上使用动态时间具体实现
Mar 18 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
js获取页面description的方法
May 21 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
js实现符合国情的日期插件详解
Jan 19 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
使用命令行工具npm新创建一个vue项目的方法
Dec 27 Javascript
vue iview实现动态路由和权限验证功能
Apr 17 Javascript
vue自定义filters过滤器
Apr 26 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 一个比较完善的简单文件上传
2010/03/25 PHP
php实现通过ftp上传文件
2015/06/19 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python3 queue队列模块详细介绍
2018/01/05 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
python实现文字版扫雷
2020/04/24 Python
用Python开发app后端有优势吗
2020/06/29 Python
如何利用Python写个坦克大战
2020/11/18 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
租赁意向书范本
2014/04/01 职场文书
奉献演讲稿范文
2014/05/21 职场文书
事业单位鉴定材料
2014/05/25 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers