关于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 相关文章推荐
最新28个很棒的jQuery 教程
May 28 Javascript
再说AutoComplete自动补全之实现原理
Nov 05 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
浅谈jQuery的offset()方法及示例分享
Jul 17 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
JS中this上下文对象使用方式
Oct 09 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
基于JavaScript实现瀑布流布局
Aug 15 Javascript
vue计算属性+vue中class与style绑定(推荐)
Mar 30 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
js更优雅的兼容
2010/08/12 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
vue中的scope使用详解
2017/10/29 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Python3常用内置方法代码实例
2019/11/18 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
论文诚信承诺书
2014/05/23 职场文书
项目经理任命书范本
2014/06/05 职场文书
片区教研活动总结
2014/07/02 职场文书
基层党员对照检查材料
2014/08/25 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
出纳试用期自我评价
2015/03/10 职场文书
慰问信格式规范
2015/03/23 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
分享几个简单MySQL优化小妙招
2022/03/31 MySQL