关于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 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
May 08 Javascript
js弹出窗口之弹出层的小例子
Jun 17 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
Sep 21 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
Sep 15 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
Aug 14 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
Sep 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
2019十大人气国漫
2020/03/13 国漫
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
Python实现的knn算法示例
2018/06/14 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
pycharm修改file type方式
2019/11/19 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Python魔术方法专题
2020/06/19 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
矫正人员思想汇报
2014/01/08 职场文书
黄河象教学反思
2014/02/10 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
绿色环保口号
2014/06/12 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
工程部文员岗位职责
2015/02/04 职场文书
玄武湖导游词
2015/02/05 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
用Python实现Newton插值法
2021/04/17 Python
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
总结Python常用的魔法方法
2021/05/25 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电