js异步编程简答题

javascript为什么是单线程?如何理解js异步编程的,EventLoop,消息队列都是做什么的,什么是宏任务,什么是微任务?
1. javascript为什么是单线程?
我们要知道,js的运行环境都是以单线模式去执行的js代码。
注:
1)javascript是单线程的,浏览器并不是单线程的;
2)javascrpt调用的某些内部的api并不是单线程的,例如倒计时器,内部会有个单独的线程去负责倒数;
3)我们指定单线程是指的执行代码的单线程;
采用单线程模式工作原因:
最早javascript是运行在浏览器上的脚本语言,目的实现页面上的动态交互,而实现页面交互核心就是dom操作,这也就决定了必须使用单线程模型,否则会出现复杂的线程同步问题;这里的单线程指的是:js执行环境中负责执行代码的线程只有一个;
优点:更安全更简单
缺点:如果有耗时操作,那么后面的任务排队就会等待时间延长(耗时阻塞),出现假死的情况
为了解决这个问题,JavaScript将任务的执行模式分为了两种:
同步模式
异步模式
2.同步模式
同步模式指的是javascript代码要排队执行,和代码书写顺序一致,后面的代码要等待前一句代码执行完成才能执行,javascript代码大多数是以同步模式进行执行的
3、异步模式
异步模式编程指的是不会等待这个任务结束才开始下一个任务&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值