关于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中的$(document).ready()与window.onload的区别
Nov 18 Javascript
JavaScript EasyPager 分页函数
May 25 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
借助javascript代码判断网页是静态还是伪静态
May 05 Javascript
js给table赋值的实例代码
Oct 13 Javascript
websocket+node.js实现实时聊天系统问题咨询
May 17 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
微信小程序自定义导航栏实例代码
Apr 05 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
Jan 21 Javascript
js实现踩五彩块游戏
Feb 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下删除一篇文章生成的多个静态页面
2010/08/08 PHP
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
php输入数据统一类实例
2015/02/23 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php截取视频指定帧为图片
2016/05/16 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python pandas如何向excel添加数据
2020/05/22 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
优秀技术工人先进材料
2014/02/17 职场文书
厂长岗位职责
2014/02/19 职场文书
大学生找工作求职信
2014/07/09 职场文书
党的生日活动方案
2014/08/15 职场文书
企业2014年度工作总结
2014/12/10 职场文书
贫困证明书范文
2015/06/16 职场文书
文艺演出主持词
2015/07/01 职场文书
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js