当前位置:首页 > 文章 > 正文内容

javascript编程单线程之同步模式

廖万里3年前 (2022-10-27)文章12992

主流的js 环境都是单线程吗模式执行js 代码, js采用为单线程的原因与最开始设计初衷有关,最早是运行在浏览器端的脚本语言,目的是为了实现页面上的动态交互,实现页面交互的核心就是dom操作,这也就决定了js必须使用单线程的模式来处理,不然就会造成严重的线程同步问题。如果js多个线程同时修改dom元素,此时浏览器就无法明确以那个线程的结果为准,为了避免这种线程同步问题,所以从一开始js就被设置成了单线程模式工作。这里所说的单线程指的是javascript执行环境中负责执行代码的线程只有一个

可以想象成只有一个人来执行任务,一个人一次只能执行一个任务,如果有多个任务就需要排队依次去完成。这种模式最大的优点是更安全更简单,缺点也很明显,遇到某一个特别耗时的任务后面的任务就需要等这个任务的结束,这也就导致整个程序的执行的拖延,出现假死的情况。

  • 优点:更安全、更简单

  • 耗时任务会出现程序假死的情况

为了结局耗时任务的问题,javscript 把 任务的执行分了两种模式,分别是

  • 同步模式(Synchoronous)

  • 异步模式(Asynchronous)

javascript编程单线程之同步模式

同步模式Synchoronous

代码依次执行,后一个任务要等待前一个任务执行完成,同步执行比较简单,代码的执行顺序就是代码的顺序。单线程大部分都是同步模式。

Console 是输出的打印,Call stack 是执行栈

开始执行 js 会把我们的整体的代码加载进来并放到一个匿名函数里面执行,然后逐行开始执行,

第一行 执行会把 console.log('global begin') 压入调用栈中,控制台打印global begin 执行结束,弹出调用栈

接下来是两个函数的声明,函数的声明不会产生调用所以接着往下执行

接下来是一个foo 函数的调用,会把 foo压入调用栈,foo 函数打印了一个消息,接着执行了 bar 函数,bar 函数也会被放入执行栈中,bar函数执行过程中又打印了一次,bar执行完毕弹出调用栈,紧接着 foo函数也执行结束,弹出调用栈

最后打印了一个消息,也是一样的压栈,整体代码执行完,执行栈就会被清空掉

javascript编程单线程之同步模式

这种排队执行的机制下某行代码执行时间过长,后面的任务就会被延迟。我们把这种延迟称为阻塞,这种阻塞对于用户而言会有页面卡顿或者叫卡死,所以需要异步模式来解决程序中无法避免的耗时操作,比如ajax操作,或者nodejs中的大文件读写


本文链接:https://www.kkkliao.cn/?id=162 转载需授权!

分享到:

版权声明:本文由廖万里的博客发布,如需转载请注明出处。


“javascript编程单线程之同步模式” 的相关文章

同样是系统为什么有的叫OS有的叫UI

同样是系统为什么有的叫OS有的叫UI

大家有没有注意到现在手机系统虽然主要分iOS和安卓两大阵营,但如果从叫法的后缀上来区分的话其实是分为OS和UI。那么,你有没有想过为什么有些手机的系统后缀是OS?有些系统的后缀是UI呢?他们之间的区别在于哪些呢?同样是系统为什么有的叫OS有的叫UI1、字面意思不同OS的英文全称为Operation...

突然崩了!一则大消息,这类股集体跳水,2000亿巨头重挫12%!千亿疫苗白马暴跌16%!信创板块又火了,恒生科技指数继续大涨

突然崩了!一则大消息,这类股集体跳水,2000亿巨头重挫12%!千亿疫苗白马暴跌16%!信创板块又火了,恒生科技指数继续大涨

中国基金报 颜颖大家好,来一起关注今天上午的市场行情和最新资讯。10月27日上午,A股重要指数全线高开:上证指数高开0.18%,深证成指涨0.23%,创业板指涨0.18%。盘面上,发电设备、贵金属、教育等板块早盘涨幅居前,医疗板块陷入调整,旅游、海运等板块跌幅居前。港股市场高调高开:恒指高开2.63...

iframe如何实现全屏,高度自适应浏览器实现

iframe编写<iframe id="iframe"         name="iframe"      ...

国产办公软件崛起,金山WPS月活用户已超5.7亿;Meta指责苹果夺走部分广告收入;Python 3.11 发布|极客头条

206 篇文章201 订阅订阅专栏「极客头条」—— 技术人员的新闻圈!CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。整理 | 梦依丹出品 | CSDN(ID:CSDNnews)一分钟速览新闻点!国产办公软件崛起 金山WPS月活用户已超5.7亿美团...

圆周率已经算到了62.8万亿位,再算下去有什么意义?

圆周率已经算到了62.8万亿位,再算下去有什么意义?

综述大家知道,圆的周长与直径的比值就是圆周率,用希腊字母表示也就是π。π是一个无限不循环的无理数,在小数点之后存在着无限多个数字,并且不会循环。令人惊讶的是,就算已经证明了π的小数点之后的数字是无穷的,仍然有不少科学家们想要把它继续算下去。最新成果显示,瑞士的一名研究人员利用一台超级计算机,耗时19...

一直瘦的人有什么共同的习惯?

一直瘦的人有什么共同的习惯?

抹拉汪09月06日关注我从170斤减到了118斤,维持了两年多到现在了,心得颇多。1、每天早上上称,数据不会骗人。2、每天固定8杯白开水,保证自己喝到2500ML的水量,促进代谢。3、一天三顿饭,尤其是早饭,一定会好好对待,白煮蛋、牛奶和一个小馒头,再配点两口能吃完的水果。4、尽量每天自己带饭去单位...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。