【深度剖析】曾经让人无法理解的事件循环,前端学习路线

news2024/12/23 7:16:56

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

  • Object.observe

如果两种任务同时出现,事件循环执行是这样的:

  1. 检查大任务队列是否为空,若不为空,则进行下一步,若为空,跳到3

  2. 从大任务队列中取队首(在队列时间最长)的任务进去执行栈中执行(仅仅一个),执行完进入下一步

  3. 检查小任务队列是否为空,若不为空,则进行下一步,否则跳到1

  4. 从小任务队列中取出队首(在队列时间最长)的任务进去事件队列

简而言之,一次事件循环只执行处于 Macrotask 队首的任务,执行完成后,立即执行 Microtask 队列中的所有任务。

基于这个结论来看一个例子:

console.log(1)

setTimeout(function() {

//settimeout1

console.log(2)

}, 0);

const intervalId = setInterval(function() {

//setinterval1

console.log(3)

}, 0)

setTimeout(function() {

//settimeout2

console.log(10)

new Promise(function(resolve) {

//promise1

console.log(11)

resolve()

})

.then(function() {

console.log(12)

})

.then(function() {

console.log(13)

clearInterval(intervalId)

})

}, 0);

//promise2

Promise.resolve()

.then(function() {

console.log(7)

})

.then(function() {

console.log(8)

})

console.log(9)

由上面的理论,一旦遇到异步代码则交给工作线程处理,主线程继续往下执行,所以首先会打印 1 和 9.

接着,执行 Microtask 中的所有任务,所以依次打印 7、8、2 (因为主线程也属于一个 Macrotask

最后,剩余的都是 Macrotask 任务了,所以就依次执行,输出 3、10、11、12、13.

定时器准时吗?


由上面的事件循环机制,引申出一个问题:定时器的时间准确吗?比如,setTimeout(func,100) 真的在 100 毫秒以后执行吗?

答案很遗憾,不是的。

const s = new Date().getSeconds();

setTimeout(function() {

// 输出 “2”,表示回调函数并没有在 500 毫秒之后立即执行

console.log(“Ran after " + (new Date().getSeconds() - s) + " seconds”);

}, 500);

最后

好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。

做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。

学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
统化的资料的朋友,可以添加V获取:vip1024c (备注前端)**
[外链图片转存中…(img-NoagY4dD-1713218493043)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1597791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深入理解Java IO流0x0A】NIO实战-网络聊天室

本篇博客将进行NIO编程实战,实现一个简单聊天室。 我们来通过 SocketChannel 和 ServerSocketChannel 实现一个 0.1 版的聊天室,先说一下需求,比较简单,服务端启动监听客户端请求,当客户端向服务器端发送信息后&#x…

【深入理解】width 的默认值,2024年最新面试复盘

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

“华为杯“华南理工大学程序设计竞赛 L-再一道好题

题目 #include<bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second const int maxn 1e6 5; const int inf 1e9 5;using namespace std;int n, m;void solve(){int res 0;int q;string s;int k;cin …

【软考】UML中的图之类图

目录 1. 说明2. 图示3. 类图使用方式3.1 对系统的词汇建模3.2 对简单的协作建模3.3 对逻辑数据库模式建模 1. 说明 1.类图&#xff08;Class Diagram&#xff09;展现了一组对象、接口、协作和它们之间的关系。2.在面向对象系统的建模中所建立的最常见的图是类图。3.类图给出系…

【浪漫 罗盘时钟 Js、css实现(附源代码) 美化版本】,前端面试必问的HashMap

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

LeetCode 11.盛最多谁的容器

目录 题目描述 方法一 双指针 思路&#xff1a; 代码&#xff1a; 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的…

Python学习笔记(37)——用xlwings库生成excel

老规矩先pip入xlwings库 STEP1:下载xlwings库 windowsr>>cmd>>pip install xlwings (如果需要不同版本可以到pypi上搜&#xff09; STEP2:完成EXCEL初级创建 请打开您的编写软件~~~~~&#xff08;小编的显示结果为PYCHARM编写的&#xff0c;因为颜色标注好看(…

最优算法100例之49-链表环-计算环的长度

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 定义两个指针,一个指针走两步,一个指针走一步,第一次相遇时开始计数,第二次相遇时停止计数,最后计数器的值就是环的长度…

用 LLaMA-Factory 在魔搭微调千问

今天在魔搭上把千问调优跑通了&#xff0c;训练模型现在在 Mac 还不支持&#xff0c;需要用 N 卡才可以&#xff0c;只能弄个N 卡的机器&#xff0c;或者买个云服务器。魔搭可以用几十个小时&#xff0c;但是不太稳定&#xff0c;有的时候会自动停止。 注册账号 直接手机号注…

康耐视visionpro-CoglntersectLineLineTool操作说明工具详细说明

◆CogIntersectLineLineTool功能说明&#xff1a; 创建两条线的交点 备注&#xff1a;在“Geometry-Intersection”选项中的所有工具都是创建两个图形的交点工具&#xff0c;其中包括圆与圆的交点、线与圆的交点、线与线的交点、线与圆的交点等&#xff0c;工具使用的方法相似。…

蚂蚁云科技集团应用研究院院长李亚锋先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 蚂蚁云科技集团应用研究院院长李亚锋先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“探索AI技术对项目管理发展的影响”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 19…

DAY13|239. 滑动窗口最大值、347.前K个高频元素

239. 滑动窗口最大值、347.前 K 个高频元素 239. 滑动窗口最大值347.前 K 个高频元素 239. 滑动窗口最大值 难度有些大啊… 其实队列没有必要维护窗口里的所有元素&#xff0c;只需要维护有可能成为窗口里最大值的元素就可以了&#xff0c;同时保证队列里的元素数值是由大到小…

PCIe错误定义与分类

前言&#xff1a; PCI总线中定义两个边带信号&#xff08;PERR#和SERR#&#xff09;来处理总线错误。其中PERR#主要对应的是普通数据奇偶校检错误&#xff08;Parity Error&#xff09;&#xff0c;而SERR#主要对应的是系统错误&#xff08;System Error&#xff09;。具体如下…

计算机网络:数据链路层 - CSMA/CA协议

计算机网络&#xff1a;数据链路层 - CSMA/CA协议 CSMA/CA概述帧间间隔工作原理退避算法虚拟载波监听 CSMA/CA概述 讲解CSMA/CA之前&#xff0c;我们回顾一下CSMA/CD的三个特性&#xff1a; 多址接入MA&#xff1a;多个主机连接在一条总线上&#xff0c;竞争使用总线 载波监听…

把握零碎时间,开启长期副业兼职之旅!在家也能轻松赚钱!

转眼间&#xff0c;2024年已悄然走过三分之一。这一年&#xff0c;外界环境似乎并不那么友好&#xff0c;但对我而言&#xff0c;我的月收入仍然相对稳定。我找到的副业让我每月能赚到3000元以上&#xff0c;这让我深感庆幸。 现实中&#xff0c;只依赖主业工资的日子确实艰辛…

解一个结构间的方程组

在行和列可自由变换的平面上3点结构有6个 4点结构有16个 现在计算4a13a1&#xff0c;得到结果为 3--5*1--13*4--15*2--19*2--23*2--25*1--35*2--41*2--66*1--69*2--75*2--77*2--85*2--98*1--111*2--118*4--119*6--123*2--190* 有19个7点结构符合要求&#xff0c;其中7a123有6种…

机器学习算法快速入门

文章目录 0.简介1.常用术语1) 模型2) 数据集3) 样本&特征4) 向量5) 矩阵6)假设函数&损失函数7&#xff09;拟合&过拟合&欠拟合 2.线性回归3.梯度下降求极值4.Logistic回归算法&#xff08;分类问题&#xff09;5.KNN最邻近分类算法6.朴素贝叶斯分类算法7.决策树…

Openwrt21.02支持SKW78(MT7621)

1.获取SDK 1.下载Openwrt源码 下载链接&#xff1a; git clone --branch openwrt-21.02 https://gitee.com/cocos_yang/openwrt.git 下载完后&#xff0c;会有一个openwrt目录&#xff0c;进入openwrt目录 cd openwrt 修改feeds.conf.default的内容&#xff0c;如下所示&#x…

Unity笔记之下拉刷新列表

这样的效果&#xff1b; 代码&#xff1a; using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…

Three.js--》穿越虚拟门槛打造的3D登录界面

今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&#xff0c;话不多说直接开始。 目录 项目搭建 初始化three代码 添加背景与地球 星星动画效果 星云动画效果 实现登录框效果 项目搭建…