关于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 相关文章推荐
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
自写的jQuery异步加载数据添加事件
May 15 Javascript
浅谈jquery中delegate()与live()
Jun 22 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
用js制作淘宝放大镜效果
Oct 28 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
解决vue.js 数据渲染成功仍报错的问题
Aug 25 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 Javascript
javascript异步编程的六种方式总结
May 17 Javascript
使用p5.js临摹动态图形
Oct 23 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
咖啡常见的种类
2021/03/03 新手入门
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python 一句话生成字母表的方法
2019/01/02 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
python中Mako库实例用法
2020/12/31 Python
英文自荐信格式
2013/11/28 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript