关于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 相关文章推荐
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
JavaScript flash复制库类 Zero Clipboard
Jan 17 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
用box固定长宽实现图片自动轮播js代码
Jun 09 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
Jul 27 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
JS实现登录页密码的显示和隐藏功能
Dec 06 Javascript
微信小程序在线客服自动回复功能(基于node)
Jul 03 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 Javascript
原生JS与JQ获取元素的区别详解
Feb 13 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+mysql 实现身份验证代码
2010/03/24 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
Python中enumerate函数代码解析
2017/10/31 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
密封类可以有虚函数吗
2014/08/11 面试题
心理健康教育心得体会
2013/12/29 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
大班幼儿评语大全
2014/04/30 职场文书
4s店活动策划方案
2014/08/25 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
在校学生证明格式
2015/06/24 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书