2.1异步编程之JavaScript:单线程

JavaScript:单线程

最近在学习异步编程,巩固了一下js,以下是我最近学习整理的内容,记录一下~

1.JS是单线程的

JS是单线程的,所以JS中的代码都是串行的, 前面没有执行完毕后面不能执行。

2.同步代码和异步代码

除了"事件绑定的函数"和"回调函数"以外的都是同步代码


2.1程序运行会从上至下依次执行所有的同步代码
2.2在执行的过程中如果遇到异步代码会将异步代码放到事件循环中
2.3当所有同步代码都执行完毕后, JS会不断检测 事件循环中的异步代码是否满足条件,一旦满足条件就执行满足条件的异步代码

3.为什么JS是单线程的?

javaScript的单线程,与它的用途有关。 作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。
这决定了它只能是单线程,否则会带来很复杂的同步问题。


例如: 如果JS是多线程的
现在有一个线程要修改元素中的内容, 一个线程要删除该元素, 这时浏览器无法确定以哪个线程为准,此时就会出错。


举例

 console.log("1"); // 同步代码
    setTimeout(function () { // 异步代码
        console.log("2");
    }, 500);
    console.log("3"); // 同步代码
  
 输出顺序:1   3    2

附上参考链接:https://segmentfault.com/a/1190000015042127

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值