
JavaScript
文章平均质量分 76
l煎饼果子
搬砖工程师
展开
-
事件循环 - nextTick与微任务 - 在 NodeJS的ESM模式和CJS模式下,nextTick与.then执行顺序不一致的问题
今天想来分享一下nodejs的type: "module"对事件循环的影响。当面试时遇到了事件循环问题,如果遇到了nextTick,把CommonJS和ESM的区别说清楚,相信会给你带来额外加分原创 2023-11-21 17:28:09 · 344 阅读 · 0 评论 -
Promise的并发控制 - 从普通并发池到动态并发池
给你一个有200个URL的数组,通过这些URL来发送请求,要求并发请求数不能超过五个。 这是一道很常考的面试题,接下来让我们来学习一下Promise并发控制 主要思路就是,判断当前队列是否满,满则等待,有空闲则补齐。 利用 Promise.race 方法,可以判断一个Promise数组中 “谁最先完成” ,从而让等待中的函数开始运行。原创 2023-11-04 00:42:34 · 914 阅读 · 0 评论 -
性能优化之懒加载 - 基于观察者模式和单例模式的实现
在前端性能优化中,关于图片/视频等内容的懒加载一直都是优化利器。当用户看到对应的视图模块时,才去请求加载对应的图像。 原理也很简单,通过浏览器提供的IntersectionObserver - Web API 接口参考 | MDN (mozilla.org),观察“哪个元素和视口交叉”,从而进行懒加载。 这个API具有很好的性能,因为它的监听是异步的,不会影响JS的主线程,所以比传统的“监听页面滚动”更佳。关于API的使用,这里就不做过多说明了,主要操作如下:原创 2023-11-03 22:23:42 · 1514 阅读 · 0 评论 -
实现分片上传、断点续传、秒传 (JS+NodeJS)(TypeScript)
上传文件是一个很常见的操作,但是当文件很大时,上传花费的时间会非常长,上传的操作就会具有不确定性,如果不小心连接断开,那么文件就需要重新上传,导致浪费时间和网络资源。 所以,当涉及到大文件上传时,分片上传和断点续传就显得很有必要。把文件分成多个分片,一片片上传,最终服务端再进行合并操作。主要思路:计算唯一标识 --> 若上传过,则秒传 --> 分片 --> 若上传过部分,则断点续传 --> 正常分片上传 --> 完整性校验 --> 合并请求原创 2023-10-28 14:20:46 · 3265 阅读 · 0 评论 -
JS:自制播放器接入操作系统接口 - Media Session API (可以实现浏览器控制上下首、耳机触控上下首歌曲等)
当我们自制播放器时,和其它大型播放器网站对比就会发现,他们的播放器,可以用操作系统级的控件来操控上下首,而我们做的只能让用户在网页中点击上下首按钮来切歌,如下: 操作系统媒体控件:笔记本电脑的键盘上自带声音控件按钮,点击键盘上的按钮将会在屏幕上显示声音控件。有耳机的还可以用耳机上的触控按钮来切换上下首、手机版的浏览器下拉通知栏也能看到浏览器的音乐控件。这是操作系统级别的操作。下方以戴尔笔记本的声音操作控件为例,对比查看大型播放器和我们的区别。大家也可以用手机浏览器或者耳机尝试。原创 2023-07-09 14:57:40 · 537 阅读 · 1 评论 -
JS把二叉树展示在页面上,二叉树转DOM
支持空节点,且可以连线。在连线的同时,把null的值也展示出来了,这样节点之间的关系也很清晰。为了方便获取真正的二叉树,下面会给出 从层序数组构造二叉树,然后再从树生成展示在页面上的DOM树 的代码。这里的代码比较分散,如果想直接复制代码查看示例的,可以往下滑动到第三点查看。 原理:把二叉树转为层序数组,然后挂载在页面上,使用css的flex布局达成效果,然后再计算节点与其父节点的中心坐标,根据勾股定理算出角度,创建出盒子,利用css3的旋转达成斜线效果原创 2023-04-15 23:18:27 · 438 阅读 · 0 评论 -
JS层序构造二叉树、JS层序遍历二叉树、JS力扣的二叉树层序数组构建
将层序数组构造为一颗二叉树、将二叉树层序遍历后返回一个层序数组,js和ts代码均有。在力扣刷算法时,给出的二叉树示例都是数组形式,如果想在自己的编译器上编写代码,就需要把数组转换为一颗真正的二叉树,这样才能作为输入示例。TypeScript三、层序遍历二叉树 迭代法关于二叉树节点类 TreeNode 的定义,在上面的代码中有TypeScript原创 2023-04-12 16:26:58 · 482 阅读 · 0 评论 -
VSCode实用快捷键:复制粘贴内容不改变剪切板等
VSCode里面有很多快捷键,接下来我讲一些我认为最实用的,可以帮助萌新提高代码编写速度。原创 2023-01-13 17:53:40 · 13038 阅读 · 0 评论 -
js 时间差转年月日时分秒
使用时间戳的差值来计算时间。下面的函数返回两组数据,第一组是转为的 日 - 时 - 分 - 秒 第二组是 转为的 年 - 月 - 日。使用时间戳的差值来计算时间。含含有源代码。含有源代码。含有源代码。含有源代码。原创 2023-02-08 15:45:36 · 656 阅读 · 0 评论 -
实现Lodash.set 、根据antd的Form.Item组件中的NamePath给对象目标位置赋值
传递NamePath,根据NamePath给对象的目标位置赋值,且不会影响对象中其它属性。antd组件库中的Form.Item属性,可以输入NamePath,会自动填充至对象的目标位置比如一个对象 obj , 想给对象目标位置赋值,如果你知道这个路径是固定的,那当然可以直接通过点语法 obj.a.b 一步步赋值,但是时候,就不能通过点语法了,需要根据用户传入的路径来进行动态赋值,比如一会想给 obj.a.b赋值,一会想给 obj.c.d[2].e赋值。原创 2023-04-08 18:53:59 · 1920 阅读 · 0 评论