前言
首先我们都知道javascript 是一门单线程、异步、非阻塞、解析类型脚本语言。
- 单线程 ??
- 异步 ??
- 非阻塞 ??
- 然后还有 事件循环、消息队列,还有微任务、宏任务这些??
同步任务和异步任务
同步: 前一个任务结束后在执行后一个任务,程序执行的顺序和任务的排列顺序是一致的。同步的做法例如:一边吃饭吃完饭才能睡觉.
异步:在做一件事的时候,因为这个任务花费时间比较长,在做这件事的时候,还可以去做另一件事,比如一边吃饭一边听音乐
js中的同步和异步:
实现异步模式的方法有很多,比较常用的有:
延迟类:setTimeout、setInterval、requestAnimationFrame、setImmediate。
监听事件实现的类型:监听new Image加载状态、监听script加载状态、监听iframe加载状态、Message。
带有异步功能类型 Promise、ajax等等。
js中同步和异步的区别:
"异步任务"是指不进入主线程,而进入任务队列的任务。(任务队列后面会讲到这个)。
javascript 单线程和浏览器多线程
单线程的核心概念是指:同一个时间只能做一件事。
单线程的缺点:如果当前执行代码所需时间很长,则会影响后面程序的执行,页面卡顿,造成用户体验感特别差(所以要引入异步)。
javascript为什么是单线程。
这是由 Javascript 这门脚本语言的用途决定的。作为浏览器脚本语言,JavaScript 主要用于处理页面中用户交互,以及操作 DOM 树、CSS 样式树(当然也包括服务器逻辑的交互处理)。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定 JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?当然我们可以通过锁来解决上面的问题。但为

本文介绍了JavaScript的同步任务和异步任务,强调了JavaScript的单线程特性及其原因,并详细讲解了执行栈、任务队列、宏任务和微任务的概念,最后阐述了事件循环的工作原理。
最低0.47元/天 解锁文章
281

被折叠的 条评论
为什么被折叠?



