防抖和字节流
最编程
2024-07-09 07:18:00
...
防抖(Debouncing)和字节流(Byte Stream)是两个不同的概念,分别在编程和数据传输领域中使用。
防抖(Debouncing)
防抖是一种在前端开发中常用的技术,用于控制事件处理函数的执行频率。防抖技术可以防止在短时间内因为频繁触发事件(如窗口大小调整、滚动等)而导致的函数执行次数过多。
工作原理:
- 延迟执行:当事件被触发时,防抖函数会设置一个延迟时间(通常以毫秒为单位)。
- 重置计时器:如果在延迟时间内再次触发事件,之前设置的计时器会被重置,重新开始计时。
- 执行函数:只有当延迟时间结束后,事件处理函数才会被执行。
应用场景:
- 搜索框输入时的搜索请求。
- 窗口大小调整或滚动时的事件处理。
- 任何需要限制函数执行频率的场景。
字节流(Byte Stream)
字节流是一种数据传输方式,指的是数据以字节为单位连续流动的过程。在计算机系统中,字节流可以是文件、网络传输数据等。
特点:
- 连续性:数据以连续的字节序列形式传输。
- 无结构性:字节流本身不包含任何结构化信息,需要通过特定的解析方式来理解数据的含义。
应用场景:
- 文件读写:在文件系统中,数据以字节流的形式存储和读取。
- 网络通信:在网络传输中,数据包以字节流的形式在网络中流动。
js实现
在JavaScript中,实现防抖(Debouncing)和处理字节流(Byte Stream)的方法如下:
防抖(Debouncing)的实现
防抖函数可以通过以下步骤实现:
- 定义防抖函数:创建一个函数,它接受一个回调函数和一个延迟时间作为参数。
- 设置计时器:在函数内部设置一个计时器,用于延迟执行回调函数。
- 重置计时器:当事件再次触发时,重置计时器。
- 执行回调函数:当计时器完成后,执行回调函数,并重置回调函数。
以下是一个简单的防抖函数实现示例:
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const context = this;
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(context, args), wait);
};
}
// 使用示例
window.addEventListener('resize', debounce(function() {
console.log('窗口大小改变');
}, 250));
字节流(Byte Stream)的处理
在JavaScript中,处理字节流通常涉及到文件读取、网络请求等操作。以下是使用Blob
和FileReader
处理文件字节流的一个示例:
-
读取文件:使用
<input type="file">
元素或XMLHttpRequest
获取文件。 -
使用
FileReader
:创建FileReader
实例来读取文件内容。 -
读取字节数据:使用
FileReader
的readAsArrayBuffer
方法将文件内容读取为字节数组。
以下是一个处理文件字节流的示例:
// 假设有一个<input>元素用于选择文件
const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', function(event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
// 这里e.target.result是一个包含文件字节的ArrayBuffer
const byteArray = new Uint8Array(e.target.result);
console.log(byteArray); // 处理字节数组
};
reader.readAsArrayBuffer(file);
}
});
在网络请求中,使用fetch
API和Response
对象的arrayBuffer
方法也可以获取字节流:
fetch('https://example.com/data')
.then(response => response.arrayBuffer())
.then(buffer => {
const byteArray = new Uint8Array(buffer);
console.log(byteArray); // 处理字节数组
})
.catch(error => console.error('Error:', error));
上一篇: 【PCIe】P2P DMA
下一篇: C++ 类和对象 拷贝构造函数
推荐阅读
-
防抖和字节流
-
aps是什么意思_不同的富士APS-C画幅微单区别在哪里,档次是怎么划分的?-X-A系列原本指的是富士的入门级微单,最大的特点是没有使用富士X-Trans™CMOS 传感器,目前在售的有两款,分别是XA5和XA7。 富士(FUJIFILM)X-A5/XA5 15-45套机 富士(FUJIFILM)X-A7/XA7 15-45套机 目前这两款相机都处于历史最低价附近,XA5套机2699元,XA7套机3999元。XA5就是一个标准的入门级相机,定位就是时尚小巧自拍,在2699这个价位不要对它的性能有太多的奢求。 XA7价格来到了3999元,这就很有意思了,富士把入门型的相机价格推到了4000元,并且提供了自拍翻转屏和4K30P视频录制,这样一款相机就很有性价比了。 XE3是老款的中端相机,价格和入门级的XA7是一样的,都是3999元,这两款相机如何做选择呢?XE3有着更多的按键意味着更好的操控,但屏幕不是自拍翻转屏所以这点不如XA7好用。 要注意的是XE3用的是富士独有的X-Trans™CMOS III传感器,XA7是普通的2400万像素传感器,你可以理解为X-Trans才是富士的精髓。 富士(FUJIFILM)X-E3 15-45套机 当然,买新不买旧,XA7的新功能和自拍翻转屏可能会更适合你。 XT200是富士专门针对vlog市场推出的相机,其实之前的XA7也可以拍摄vlog,但XT200是富士官方宣传中的第一款vlog相机。数码防抖+3.5mm 麦克风口+自拍翻转屏+无裁切4K30P,这些都是XT200的优势,但这款相机也是普通的2400万像素传感器,没有用富士独有的X-Trans,可能是从价格角度考虑做了阉割吧。 富士(FUJIFILM)X-T200/XT200 微单相机 Vlog相机 富士XT30是我认为富士性价比最高的微单照相机,注意我说的是照相机。理由很简单,因为从拍照角度来看XT30和XTXT3几乎没有明显差距,主要是操控差了一些、视频性能大幅削弱,但好歹也是个有着双波轮+曝光补偿波轮+快门速度波轮的相机,操控方面不会太差的。视频方面也有着超采4K 30P的规格,支持F-log输出。 可以这么说,如果你只拍照,那么XT30是富士微单中性价比最高的,视频方面XT30也不差,只不过没有专业的10bit和4K60P而已。 富士(FUJIFILM)X-T30/XT30 15-45套机 XT3和XT4得放在一起说,这两款相机其实都挺好,420 10bit 4K60P的专业视频模式基本代表了APS-C画幅的上限水平。XT4还提升了电池续航增加了五轴防抖,配上富士独特的胶片滤镜,不管是拍照还是拍视频都非常优秀。 不要觉得这两款相机贵,同价位里能做到4K60P的微单也就是M43画幅的GGHGH5S,最便宜的G9机身也要7000多,这APS-C画幅的XT3机身接近8000也算合理价格范围内。除此之外的4K60P机身只有13998的松下S5和15999的佳能R6了。 富士(FUJIFILM)X-T3/XT3 1855套机 富士(FUJIFILM)X-T4/XT4 微单相机 套机(18-55mm) B站更新4K视频投稿后有很多人想拍摄4K升格,在很长一段时间里富士XT3和XT4是最优选,毕竟兼顾视频和拍照,对焦也还算能用。 X-Pro3和X-Pro2这两款微单可以算是旁轴相机,是富士官方意义上的旗舰级相机。从用料做工操控按键角度来说的确是旗舰级别,但视频性能方面只有4K30P,价格却比XT3还贵,可能这就是旁轴情怀带来的溢价吧。 富士(FUJIFILM)X-Pro3 微单相机 机身 黑色 我在之前的文章里提过很多次,有一些相机属于如果你想买你压根不会看测评,如果你犹豫那么这款相机不适合你,为什么这么说,因为有一些比较小众的相机可能在性能上并不好,但独特的外形、操控、体积、传承赋予了它独特的定位。譬如富士X-Pro系列微单就是旁轴的电子化,理光GR传承大师的扫街理念,尼康DF的外形源自胶片时代的相机,这些相机就不是针对大多数消费者的,定位就是小众。所以我说喜欢就买,不要考虑什么性能规格。 X100系列相机是一款不可换镜头的等效35mm旁轴数码相机,从外形看就是经典的复古造型。这两款相机和X-Pro3一样,如果你喜欢那就买,别犹豫, 你在市场上找不到同类型的其他数码相机,徕卡Q是28mm,索尼RX1R系列是35mm但外形不够复古,X100系列就是独特的你没有其他选择。 那么X100F和X100V该如何选择呢?X100F的镜头很一般甚至算不上好,如果我没记错的话和初代的X100是同款镜头,X100V的镜头是全新制作的很棒,X100V的机身性能也和XTX-Pro3差不多。 富士(FUJIFILM)X100F 数码相机 旁轴 2430万像素 富士(FUJIFILM)X100V 数码相机 旁轴 2610万像素 还是那句话,这两款相机也是那种如果你喜欢那就毫不犹豫下单的类型,而且这两款相机也没有竞品。 以前不推荐富士的原因是原厂镜头太贵,现在唯卓仕给富士出了四款可以自动对焦的大光圈镜头,覆盖35到130mm的焦段,可以基本满足人像摄影爱好者的需求。拍风景的话国产很多镜头厂商都有富士卡口的手动镜头可以选择,从这个角度来说富士微单就非常值得入手了。 和友商竞品相比:
-
前端] - 前端必须懂得 "防抖 "和 "降低成本 "的方法
-
一篇一万字的文章,详细介绍了今日头条和抖音的推荐算法原理!
-
如何在微信小程序中实现防抖和节流的小程序版本编写方法
-
js防抖和节流
-
前端提升技巧:防抖与节流的性能优化实践
-
Vue定制指令:深度解析防抖与节流的实现
-
手写实现常见函数及其源码解析:new、call、apply、bind、reduce、currying、防抖与节流