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

龙岩建设局网站声明个人网站开发工具

龙岩建设局网站声明,个人网站开发工具,北湖区网站建设公司哪家好,推荐一个两学一做的网站众所周知,JavaScript 是单线程语言,只能同时执行做一件事(js只有一个线程,称之为main thread-主线程) 1.Javascript 运行机制 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行。 2.Javascript 任…

众所周知,JavaScript 是单线程语言,只能同时执行做一件事(js只有一个线程,称之为main thread-主线程)

1.Javascript 运行机制 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行
2.Javascript 任务分为2类,同步任务异步任务(异步又分为宏任务微任务),同步和异步任务都是队列,所以是先进先出的。
3.执行顺序同步—>异步—>MicroTask(微任务)—>MacroTask(宏任务)(异步包含宏任务和微任务,异步中微任务是优于宏任务执行的)

在这里插入图片描述

在这里插入图片描述

                概念不懂,直接看下方!

JS 调用栈

JS调用栈采用的是后进先出(数据结构)的规则,当函数执行的时候,会被添加到栈的顶部,当执行栈执行完成后,就会从栈顶移出,直到栈内被清空。

它用于存储正在执行的 js代码块及其运行环境。每当创建一个新的执行上下文,就会将其添加到调用栈中。这个执行上下文包含了该函数或代码块执行所需的所有变量、参数、作用域等。

MacroTask(宏任务)

宏任务通常包括整体代码块(script),setTimeout,setInterval,setImmediate,I/O 操作等异步操作,它们会被推入到宏任务队列中等待执行。当主线程执行完当前任务后,会去检查宏任务队列,如果队列中有任务,就会从队列中取出一个任务执行,直到队列为空。

MicroTask(微任务)

微任务通常包括 Promise 的回调函数,process.nextTick,MutationObserver 等异步操作,它们会被推入到微任务队列中等待执行。当一个宏任务执行完成后,会检查微任务队列,如果队列中有任务,就会依次取出任务执行,直到队列为空。注意,微任务的执行时机是在当前宏任务执行结束后,下一个宏任务开始之前,也就是说微任务的执行优先级高于宏任务。

同步和异步事件举例

举例1:

console.log('Start');
setTimeout(() => console.log('Timeout'), 0);
Promise.resolve().then(() => console.log('Promise'));
console.log('End');

    上方代码输出顺序:

Start
End
Promise
Timeout

在这里插入图片描述
举例2:

console.log('Start');
setTimeout(() => console.log('Timeout'), 0);
Promise.resolve().then(() => console.log('Promise'));
console.log('End');
setTimeout(() => console.log('Timeout 2'), 0);
Promise.resolve().then(() => console.log('Promise 2'));

    上方代码输出顺序:

Start
End
Promise
Promise 2
Timeout
Timeout 2

在这里插入图片描述

总结

总结一下,当 JavaScript 引擎执行代码时,先执行同步任务,执行完同步任务后,再开始执行异步任务,异步任务分宏任务微任务,如果遇到了宏任务,会将它放到宏任务队列中等待执行;如果遇到了微任务,会将它放到微任务队列中等待执行。当主线程执行完当前任务后,会先执行微任务队列中的任务,直到微任务队列为空,再去执行宏任务队列中的任务,直到宏任务队列为空。这样就保证了异步任务的执行顺序和及时性,避免了可能出现的竞态条件和阻塞情况。


参考文章:
参考①:js微宏任务https://www.jb51.net/article/271092.htm


不足的地方请指教~

http://www.yayakq.cn/news/212024/

相关文章:

  • 做网站开发用什么软件关键词优化排名用哪个软件比较好
  • 北京网站建设出名 乐云践新全能网站建设教程
  • 阿里云做电脑网站互联网保险乱象
  • 酷炫html5网站在社保网站上怎么做员工的退费
  • 烟台做网站案例网站设计需要用到什么技术
  • 有专门做网站的公司html5网站模板免费下载
  • 佛山新网站建设特色vs网页设计教程
  • 怎么才算完成一个网站私域运营
  • 食品网站建设规划书做网站需要服务器
  • html网站开发流程做a动漫视频在线观看网站
  • 长沙外贸网站建设做视频网站要什么
  • 网站中常用的功能模块青海省住房和城乡建设局网站首页
  • 宁波专业做网站的公司哪家好长沙高升小区做汽车行业网站的网络公司论天心区网页设计
  • 唐山网站建设托管网站制作佛山
  • 长春网站建设培训班深圳app搭建
  • 建设局网站安徽pythom 网站开发规范
  • 网站推广优化价格网站首页焦点图
  • 电话号码查询公司单位郑州seo外包收费标准
  • 邳州做网站软件工程师40岁后的出路
  • 建设银行天津分行门户网站wordpress H1 title
  • 一个网站是怎么建立的互联网公司排名1000
  • 网站空间 php程序动态ip可以做网站吗
  • 网站建设微信运营推广德州哪里有做网站的
  • 2014年网站开发语言企业网站案例分析
  • 旅游网站建设与翻译手机网站比例尺寸
  • 如何查询自己的网站是否被收录自己如何免费制作一个网站
  • 网站设计大作业创意设计网站推荐
  • 建站公司互橙知乎媒体平台推广
  • 怎么将自己做的网站上线wordpress怎么上传到服务器错误
  • 云南城乡建设厅网站苏州建设工程信息网站