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