关于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 相关文章推荐
不用MOUSEMOVE也能滑动啊
May 23 Javascript
基于jquery的$.ajax async使用
Oct 19 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
Nov 06 Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
CSS+jQuery实现简单的折叠菜单
Dec 20 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
vue elementUI table 自定义表头和行合并的实例代码
May 22 Javascript
10种JavaScript最常见的错误(小结)
Jun 21 Javascript
全面解析Vue中的$nextTick
Dec 24 Vue.js
javascript实现数字时钟效果
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
destoon数据库表说明汇总
2014/07/15 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
Python Pillow Image Invert
2019/01/22 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
自我鉴定书范文
2013/10/02 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
趣味体育活动方案
2014/02/08 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
开学典礼主持词
2014/03/19 职场文书
建筑安全责任书范本
2014/07/24 职场文书