关于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 $.get 的妙用 访问本地文本文件
Jul 12 Javascript
禁止空格提交表单的js代码
Nov 17 Javascript
js判断元素是否隐藏的方法
Jun 09 Javascript
JS简单实现浮动窗口效果示例
Sep 07 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 Javascript
详解Layer弹出层样式
Aug 21 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
React-router4路由监听的实现
Aug 07 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
Nov 14 Javascript
泛谈JS逻辑判断选择器 || &&
May 24 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
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php中socket通信机制实例详解
2015/01/03 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
使用Python更换外网IP的方法
2018/07/09 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Python通过len函数返回对象长度
2020/10/22 Python
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
护理自我鉴定范文
2013/10/06 职场文书
装修设计师求职信
2014/02/26 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
如何写股份合作协议书
2014/09/11 职场文书
清洁工个人总结
2015/03/04 职场文书
2015年大学生实习评语
2015/03/25 职场文书
小学生教师节广播稿
2015/08/19 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
MySQL root密码的重置方法
2021/04/21 MySQL
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL