- 博客(3)
- 收藏
- 关注
原创 setTimeout 实现原理
setTimeout 实现 渲染进程所有运行在主线程上的任务都需要先添加到消息队列中,然后事件循环系统顺序执行消息队列 eg: 解析 DOM; 改变 web 大小, 重新布局; js 垃圾回收; 异步执行 js 代码 但是定时器的任务不能直接放置在消息队列中,他需要按照时间间隔来执行,因此,chrome 除了消息队列外,新增了个延时队列,在每次执行完任务后,执行延迟队列中的任务,计算出到期任务,依次执行 代码实现: 在每次新增一个定时器时,将定时器添加到 DelayTask 中 执行消息循环时,在当前
2021-04-14 14:40:46
290
原创 浏览器中的消息队列和事件循环
浏览器中的消息队列和事件循环 渲染进程-主线程(dom/style/layout/JavaScript input/task) 系统统筹以上任务就是消息队列和时间循环系统 单线程处理任务 顺序执行 void MainThread(){ int num1 = 1+2; //任务1 int num2 = 20/5; //任务2 int num3 = 7*8; //任务3 print("最终计算的值为:%d,%d,%d",num1,num2,num3); //任务4
2021-04-14 10:35:07
244
原创 前端常用设计模式
前端常用设计模式 工厂模式 工厂模式不关心工厂函数内部的逻辑,只关心根据用户传递的参数返回对应的实例;工厂函数隐藏复杂逻辑,只提供一个接口 class Man { constructor(name) { this.name = name; } alertName() { alert(this.name); } } class Factory { static create(name) { return new Man(name); } } Factory.
2021-03-28 23:28:45
58
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人