javascript 同步任务、异步任务,单线程、多线程,执行栈、任务队列、任务队列的维护,宏任务、微任务,事件循环。

本文介绍了JavaScript的同步任务和异步任务,强调了JavaScript的单线程特性及其原因,并详细讲解了执行栈、任务队列、宏任务和微任务的概念,最后阐述了事件循环的工作原理。
摘要由CSDN通过智能技术生成

前言

        首先我们都知道javascript 是一门单线程、异步、非阻塞、解析类型脚本语言。

  • 单线程 ??
  • 异步 ??
  • 非阻塞 ??
  • 然后还有 事件循环、消息队列,还有微任务、宏任务这些??

同步任务和异步任务

        同步: 前一个任务结束后在执行后一个任务,程序执行的顺序和任务的排列顺序是一致的。同步的做法例如:一边吃饭吃完饭才能睡觉.

        异步:在做一件事的时候,因为这个任务花费时间比较长,在做这件事的时候,还可以去做另一件事,比如一边吃饭一边听音乐

js中的同步和异步:

实现异步模式的方法有很多,比较常用的有:
        延迟类:setTimeout、setInterval、requestAnimationFrame、setImmediate。
        监听事件实现的类型:监听new Image加载状态、监听script加载状态、监听iframe加载状态、Message。
        带有异步功能类型 Promise、ajax等等。

js中同步和异步的区别:

        "异步任务"是指不进入主线程,而进入任务队列的任务。(任务队列后面会讲到这个)。

javascript 单线程和浏览器多线程

单线程的核心概念是指:同一个时间只能做一件事。

单线程的缺点:如果当前执行代码所需时间很长,则会影响后面程序的执行,页面卡顿,造成用户体验感特别差(所以要引入异步)。

javascript为什么是单线程。

        这是由 Javascript 这门脚本语言的用途决定的。作为浏览器脚本语言,JavaScript 主要用于处理页面中用户交互,以及操作 DOM 树、CSS 样式树(当然也包括服务器逻辑的交互处理)。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定 JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?当然我们可以通过锁来解决上面的问题。但为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值