关于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的.animate()函数在IE6下的问题
Dec 03 Javascript
js实现俄罗斯方块小游戏分享
Jan 31 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
May 26 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
Angularjs中ng-repeat的简单实例
Aug 25 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
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入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
js 居中漂浮广告
2010/03/21 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python制作朋友圈九宫格图片
2019/11/03 Python
AUC计算方法与Python实现代码
2020/02/28 Python
python接入支付宝的实例操作
2020/07/20 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
C语言面试题
2013/05/19 面试题
跟单文员的岗位职责
2013/11/14 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
美术教师自我鉴定
2014/02/12 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
信息工作经验交流材料
2014/05/28 职场文书
解析Redis Cluster原理
2021/06/21 Redis