说实话自从做了前端之后,还没怎么用过二进制数组,看了es6入门之后才知道原来二进制数组的用处还不少。

1、AJAX

XMLHttpRequest第一版responseType属性默认为text

XMLHttpRequest第二版XHR2允许服务器返回二进制数据,这时分成两种情况:

  • 已知二进制数据类型:responseType设为arraybuffer

  • 未知二进制数据类型:responseType设为blob

var xhr = new XMLHttpRequest();
xhr.open('GET', someUrl);
xhr.responseType = 'arraybuffer';xhr.onload = function () {let arrayBuffer = xhr.response;// ···
};xhr.send();

2、Canvas

首先看下面的例子:

var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
var uint8ClampedArray = imageData.data; //Canvas元素输出的二进制像素数据,也是TypedArray数组

需要注意的是:Uint8ClampedArray这个类型是针对Canvas元素的专有类型,它是专门针对颜色,取值只能是0~255。

3、WebSocket

WebSocket可以通过ArrayBuffer,发送或接收二进制数据。

var socket = new WebSocket('ws://127.0.0.1:8081');
socket.binaryType = 'arraybuffer';// 等待直到socket打开
socket.addEventListener('open', function (event) {// 发送二进制数据var typedArray = new Uint8Array(4);socket.send(typedArray.buffer);
});// 接受二进制数据
socket.addEventListener('message', function (event) {var arrayBuffer = event.data;// ···
});

4、Fetch API

Fetch API取回的数据,就是ArrayBuffer对象。

fetch(url)
.then(function(request){return request.arrayBuffer()
})
.then(function(arrayBuffer){// ...
});

5、File API

如果知道一个文件的二进制数据类型,也可以将这个文件读取为ArrayBuffer对象。

var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function () {var arrayBuffer = reader.result;// ···
};

ES6学习笔记---二进制数组(应用)相关推荐

  1. Es6学习笔记(7)----数组的扩展

    参考书<ECMAScript 6入门> http://es6.ruanyifeng.com/ 数组的扩展 1.扩展运算符:可以将数组转化成逗号隔离的单个参数 ...[1,2,3] //控制 ...

  2. es6学习笔记-字符串的扩展_v1.0_byKL

    es6学习笔记-字符串的扩展_v1.0 字符的Unicode表示法 JavaScript 允许使用uxxxx的形式表示一个字符,但在 ES6 之前,单个码点仅支持u0000到uFFFF,超出该范围的必 ...

  3. ES6学习笔记(五):轻松了解ES6的内置扩展对象

    前面分享了四篇有关ES6相关的技术,如想了解更多,可以查看以下连接 <ES6学习笔记(一):轻松搞懂面向对象编程.类和对象> <ES6学习笔记(二):教你玩转类的继承和类的对象> ...

  4. ES6学习笔记04:Set与Map

    ES6学习笔记04:Set与Map JS原有两种数据结构:Array与Object,ES6新增两种数据结构:Set与Map 一.Set数据结构 Set类似于数组,但是成员值不允许重复,因此主要用于数据 ...

  5. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  6. ES6学习笔记二arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  7. # es6 学习笔记

    es6 学习笔记 let变量 let和var用法级别一样 let不能重复声明,但是var可以 var varIns = "A"; var varIns = "B" ...

  8. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  9. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...

  10. ES6学习笔记02:let 与 const

    ES6学习笔记02:let 与 const 用var声明的变量会造成全局污染,于是就产生了新的声明方式. 1.let 用let声明变量,必须先声明后使用. 在for循环头里用let定义循环变量i,那么 ...

最新文章

  1. python3爬虫初探(四)之文件保存
  2. 在信用健全的今天,史玉柱背负2.5亿债务还能翻身吗?
  3. 1.用代码演示String类中的以下方法的用法 (2018.08.09作业)
  4. 大佬为何可以把单片机描述得如此形象生动?
  5. MySQL-Front的安装简介
  6. MySQL进阶之索引
  7. java中equals和 == 的区别
  8. PHP框架最低支持PHP版本
  9. android微信条码支付接口,Android中调用微信支付接口
  10. CentOS7安装mysql数据库完整过程以及安装中遇到的各种问题的解决方案
  11. 日语整理之 自五 他五
  12. WannaCry勒索病毒分析
  13. wifi一到晚上服务器无响应,一到晚上九点,网络就开始卡了?主要原因是这三点!...
  14. ChatGPT插件与简要介绍(已收集70个)了解添加插件后的chatgpt能做什么
  15. 细说php作者高洛峰免费收徒
  16. ERD Online 4.0.3数据库在线建模(免费、更美、更稳定)
  17. Python读写文件(txt, csv等)小结
  18. C#实现拉格朗日、牛顿、Hermite插值
  19. 强制删除五笔字型输入法
  20. Components of Ryu

热门文章

  1. 主角有智能芯片的种田小说_5本搞笑玩梗的良品小说,文风轻松幽默,一本正经地逗你笑...
  2. JavaWeb 基础系列篇
  3. Harmony OS — PageSliderIndicator滑动页面指示器
  4. Flutter学习 — 添加Material触摸水波效果
  5. Futter基础第6篇: 实现网格布局【GridView、GridView.count、GridView.builder】
  6. 模仿QZONE挂图效果
  7. 【CF734F】Anton and School(构造)
  8. DJ 算法的队列优先优化
  9. iOS开发_统计xcode代码行数
  10. ES6学习之路10----Symbol