前端BUG录- 因lodashjs debounce去抖优化造成的 bug

简介: 做开发其实还是要考虑一下边界问题,因为边界问题有时候会导致体验断崖式的下跌。正好前段时间遇到了个问题,今天分享一下。之前做了一个 IM 的项目,是会话列表出现的问题:进入页面时,会加载会话列表,加载数据会造成卡顿。

先说说我的逻辑:

  1. 分页拉取本地历史数据(已读消息,userid排序的20个人)


  1. 定时拉取远程数据(未读消息,最早的20条)


  1. 如果有新的消息,那么会对会话列表排序(Array.prototype.sort)。用 lodash 做了 debounced(防抖动),并且加了 [options.maxWait] ,设置 func 允许被延迟的最大值。


是不是看上数据处理都是一小块一小块的,并没什么问题?就是这么巧,因为我代码没处理边界,导致排序的算法的执行时间过长超过100ms(讲道理16ms以下才可以,这里我换一篇文章说),然后又因为加了 maxWait 导致会同步调用。


bVcHjIC.webp.jpg


https://github.com/lodash/lodash/blob/15e1557b2a97c8bbee22d873832d90ed3ba50ba7/debounce.js


对于我们普通理解上的去抖其实都是异步操作。


bVcHjIW.webp.jpg


当然最后问题还是被修复了


  1. 修改 sort 算法,改了一下 timsort,然后又改了一下插入排序。降低方法的执行时间,所以不会出现节流失效的问题。


  1. 加大 maxWait 防止密集的同步调用。


  1. 修改 Array 的长度,禁止无上限的叠加。
相关文章
|
21天前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
17天前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
10天前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
14天前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
41 2
|
19天前
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
23天前
|
Web App开发 缓存 监控
前端性能优化实战:从代码到部署的全面策略
前端性能优化实战:从代码到部署的全面策略
21 1
|
23天前
|
Web App开发 前端开发 JavaScript
前端性能优化实战:从代码到部署的全面指南
前端性能优化实战:从代码到部署的全面指南
24 1
|
26天前
|
编解码 前端开发 JavaScript
从入门到精通:揭秘前端开发中那些不为人知的优化秘籍!
前端开发是充满无限可能的领域,从初学者到资深专家,每个人都追求更快、更稳定、更用户体验友好的网页。本文介绍了四大优化秘籍:1. HTML的精简与语义化;2. CSS的优雅与高效;3. JavaScript的精简与异步加载;4. 图片与资源的优化。通过这些方法,可以显著提升网页性能和用户体验。
19 3
|
1月前
|
缓存 前端开发 JavaScript
前端性能优化:Webpack与Babel的进阶配置与优化策略
【10月更文挑战第28天】在现代Web开发中,Webpack和Babel是不可或缺的工具,分别负责模块打包和ES6+代码转换。本文探讨了它们的进阶配置与优化策略,包括Webpack的代码压缩、缓存优化和代码分割,以及Babel的按需引入polyfill和目标浏览器设置。通过这些优化,可以显著提升应用的加载速度和运行效率,从而改善用户体验。
49 6
|
1月前
|
缓存 监控 前端开发
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第26天】前端工程化是现代Web开发的重要趋势,通过将前端代码视为工程来管理,提高了开发效率和质量。本文详细对比了Webpack和Gulp两大主流构建工具的选择与配置优化,并提供了具体示例代码。Webpack擅长模块化打包和资源管理,而Gulp则在任务编写和自动化构建方面更具灵活性。两者各有优势,需根据项目需求进行选择和优化。
71 7