js延迟1秒往下执行_这一次,彻底弄懂 JavaScript 执行机制(别还不知道什么是宏任务,什么是微任务)...

本文详细解析了JavaScript的执行机制,包括同步任务、异步任务、事件循环(Event Loop)、setTimeout和setInterval的工作原理,以及Promise和process.nextTick在宏任务与微任务中的角色。通过实例阐述了JavaScript如何处理异步操作,帮助读者深入理解JavaScript的执行流程。
摘要由CSDN通过智能技术生成
     本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论:
  • javascript是按照语句出现的顺序执行的
看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的:
a33a185e123a97bf4aa2b5969ccdd026.png
5107fc3a19da479ad17e63a2144b093a.pngimage.png然而实际上js是这样的: c7fa26207156fbce8cec0bc7f4c66d0c.png                                         185af89c9c77faab258eb1d21e4f4ab5.png依照 js是按照语句出现的顺序执行这个理念,我自信的写下输出结果:
//"定时器开始啦"
//"马上执行for循环啦"
//"执行then函数啦"
//"代码执行结束"复制代码
去chrome上验证下,结果完全不对,瞬间懵了,说好的一行一行执行的呢? 1797f8b131cab57869f272e88766170d.png    我们真的要彻底弄明白javascript的执行机制了。

1.关于javascript

    javascript是一门 单线程语言,在最新的HTML5中提出了Web-Worker,但javascript是单线程这一核心仍未改变。所以一切javascript版的"多线程"都是用单线程模拟出来的,一切javascript多线程都是纸老虎!

2.javascript事件循环

    既然js是单线程,那就像只有一个窗口的银行,客户需要排队一个一个办理业务,同理js任务也要一个一个顺序执行。如果一个任务耗时过长,那么后一个任务也必须等着。那么问题来了,假如我们想浏览新闻,但是新闻包含的超清图片加载很慢,难道我们的网页要一直卡着直到图片完全显示出来?因此聪明的程序员将任务分为两类:
  • 同步任务
  • 异步任务
    当我们打开网站时,网页的渲染过程就是一大堆同步任务,比如页面骨架和页面元素的渲染。而像加载图片音乐之类占用资源大耗时久的任务,就是异步任务。关于这部分有严格的文字定义,但本文的目的是用最小的学习成本彻底弄懂执行机制,所以我们用导图来说明: 439ec7622f58b86c370e0842d97956f6.png 导图要表达的内容用
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值