当前位置: 首页 > news >正文

西安三网合一网站建设网页设计与制作知识点

西安三网合一网站建设,网页设计与制作知识点,查查企业信息查询,静态网站 模板浏览器和Node的事件循环机制 引言浏览器的事件循环机制 引言 由于JS是单线程的脚本语言,所以在同一时间只能做一件事情,当遇到多个任务时,我们不可能一直等待任务完成,这会造成巨大的资源浪费。为了协调时间,用户交互…

浏览器和Node的事件循环机制

  • 引言
  • 浏览器的事件循环机制

引言

由于JS是单线程的脚本语言,所以在同一时间只能做一件事情,当遇到多个任务时,我们不可能一直等待任务完成,这会造成巨大的资源浪费。为了协调时间,用户交互,脚本还有UI渲染和网络处理等行为,防止主线程阻塞才有了事件循环。而事件循环其实就是一种机制,它会不断的轮询任务队列,并将队列中的任务依此执行。

JavaScript的任务分为两种同步和异步:

  • 同步任务:在主线程上排队执行的任务,只有一个任务执行完毕,才能执行下一个任务,
  • 异步任务:不进入主线程,而是放在任务队列中,若有多个异步任务则需要在任务队列中排队等待。

因为JS是单线程,在执行代码的时候将所有函数压入执行栈中。同步任务会按照后进先出的原则以此执行。遇到异步任务时,将其放入任务队列中。当前执行栈里事件执行完毕后,就会从任务队列中取出对应异步任务的回调函数放入执行栈中继续执行。

为什么JS是单线程的脚本语言呢?

这是因为JS在执行过程中,主要操作为操作DOM树结构,如果JS有多个线程的话,多线程同时对一个DOM树进行操作,浏览器会发生错乱,根本无法判断这几个线程的优先级。

执行栈,任务队列,主线程的区分

  • 执行栈 所有的任务都是在主线程运行,形成了执行栈;
  • 任务队列 是用来存放异步任务的运行结果,事件循环是唯一的,但任务队列可以有很多个;
  • 主线程 主线程规定了要执行执行栈中的哪个事件。主线程会不停的从执行栈中读取事件,会执行完所有栈中的同步代码,这就是主线程循环。当主线程将执行栈中所有的同步任务执行完后,主线程将回去查看任务队列是否有任务,如果有,那些对应的异步任务会结束等待状态,进入执行栈并开始执行。
    更多关于异步操作Promise的解释,请移步另一篇博客

浏览器的事件循环机制

任务队列里边又分宏观任务、微观任务。

  • 宏任务:script全部代码、setTimeout、setInterval、setImmediate、I/O、UI渲染
  • 微任务:Promise.then、Process.nexTick(Node独有)、MutationObserver

new Promise是同步任务,Promise.resolve().then()是微任务
当执行栈清空后,会先检查任务队列中是否有宏任务,如果有就按照先进先出的原则,压入执行栈中执行。然后执行该宏任务产生的微任务,如果微任务中产生了新的微任务,并不会推迟到下一个循环中,而是在当前循环中继续执行。 当执行这一轮的微任务完毕后,开启下一轮循环,执行任务队列中的宏任务。
一次事件循环会处理一个宏任务和所有这次循环中产生的微任务。

对于宏任务和微任务的关系,那就是微任务始终跟在当前宏任务的后面,当前宏任务还没执行完之前,遇到宏任务先扔一边,遇到微任务就跟在当前宏任务后面。
在这里插入图片描述
这段代码的解释:首先JS本身就是一个宏任务,所以遇到setTimout时候会将这个宏任务先放到一边,继续往下执行,遇到了new Promise同步任务,所以输出同步宏任务Promise,继续往下执行,遇到微任务,跟在了当前宏任务(JS)后面,随后输出同步宏任务,当前宏任务(JS)执行完毕,执行跟在这个宏任务后面的微任务,输出同步微任务Promise,这个时候当前宏任务带着的微任务全部执行完毕,第一个事件循环结束,开启第二个事件循环,读取第二个宏任务,遇到了new Promise同步任务,直接输出,随后遇到了微任务,跟在了当前这个宏任务后面,继续向下执行,输出异步宏任务,当前宏任务执行完毕,开始执行跟在后面的微任务,输出异步微任务then。

http://www.mmbaike.com/news/25981.html

相关文章:

  • 北京智能网站建设哪里有seo网站诊断报告
  • 网站建设方式谷歌网站网址
  • 网站建设石家庄希爱力5mg效果真实经历
  • 深圳微信网站开发公司邯郸今日头条最新消息
  • 做个网站多少钱产品推广文章
  • 青岛市城乡建设局网站seo是什么意思职业
  • Php做网站创业绍兴seo公司
  • 网站图怎么做会高清新产品推广策划方案
  • 网站建立的重要性大连seo关键词排名
  • 团购网站 备案问题seo 页面链接优化
  • 怀柔 做网站的如何去除痘痘效果好
  • 跨境独立站有哪些郑州网站建设哪里好
  • 寻求完善政府网站建设关键词点击排名系统
  • 淄博网站设计方案seo网络推广课程
  • 好看的网页设计公司seo按天计费系统
  • 南江县住房和城乡建设局网站汕头网站建设开发
  • j建设银行信用卡网站app开发多少钱
  • 新闻更新的web网站开发百度投票人气排行榜入口
  • 太原建站模板系统seo高效优化
  • 北京海淀社保网站seo的流程是怎么样的
  • 我做的网站上有需要别人直接下载的东西 怎么做到这一步seo搜索引擎优化推广
  • 网站建设 中企动力宜昌重庆seo全面优化
  • 做彩票网站违法吗友情链接发布网
  • 附近做网站的公司电话青岛网站建设
  • 网站制作应用如何建网站不花钱
  • 网站建设 博采网络厦门seo排名外包
  • 智慧团建系统平台登录入口seo优化排名技术百度教程
  • 网站建设都包括哪些方面建站模板平台
  • 计算机网站设计seo软件开发
  • 盐城专业做网站的公司百度经验手机版